operating systems and computer architecture eng. hector m lugo-cordero, ms cis 4361 secure os admin
TRANSCRIPT
![Page 1: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/1.jpg)
Operating Systems and Computer Architecture
Eng. Hector M Lugo-Cordero, MS
CIS 4361 Secure OS Admin
![Page 2: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/2.jpg)
How does a computer work?
• Signals control hardware
• Signals can have a high (1) or low (0) values
• Integers are represented as binary strings
• Floats are represented in IEEE754 format
![Page 3: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/3.jpg)
User Space
Services / Hypervisor
System Calls
Device Drivers / Hardware Abstraction Layer (HAL)
Kernel / BIOS
Instruction Set Architecture
Hardware
![Page 4: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/4.jpg)
Hardware
• CPU (central processing unit)– Registers– Flags
• ALU (Arithmetic Logic Unit)• FPU (Floating-Point Unit)• Cache• RAM/ROM/Flash• Memory• DMA (Direct Memory Access)• Bus
![Page 5: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/5.jpg)
Instruction Set Architecture
• Machine code: chain of instructions in 32/64 bit binary format
• Assembly: mnemonics which get translated to machine code– Low level programming
• Set of mnemonics are the ISA– Contract between hardware and software– OS follow that contract– Programs get compiled into that contract– Processor supports all the functions specified by the
contract
![Page 6: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/6.jpg)
ISA Types
• CISC: complex instruction set computing– Include many instructions in the ISA– CPU tends to be larger and more power consuming – E.g. INTEL x86
• RISC: reduced instruction set computing– Support only limited functions– Hardware can be reduced and more specialized– Emulate remaining functions (e.g. mul = adds)– E.g. MIPS, Sparc
• There are no longer traditional RISCs• Multiple cores tend to be RISCs
![Page 7: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/7.jpg)
x86 General Purpose Registers
• 8 bits– al and ah, bl and bh, cl and ch, dl and dh
• 16 bits– ax, bx, cx, dx
• 32 bits– eax, ebx, ecx, edx
• 64 bits– rax, rbx, rcx, rdx
• Specialty: a (arithmetic), b (base), c (counter), d (data)
![Page 8: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/8.jpg)
x86 Other Registers
• ESP: stack pointer• ESI, EDI: index registers (source, data)• EBP: frame/base pointer (on stack)• EIP: instruction pointer• PC: program counter• Some segments:
– CS: code segment– DS: data segment– SS: stack segment– ES, FS, GS: extra segments
![Page 9: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/9.jpg)
EFLAGS• Carry
– unsigned arithmetic out of range
• Overflow– signed arithmetic out of range
• Sign– result is negative
• Zero– result is zero
• Auxiliary Carry– carry from bit 3 to bit 4
• Parity– sum of 1 bits is an even number
![Page 10: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/10.jpg)
Register Layout (32 bits)
http://www.cs.virginia.edu/~evans/cs216/guides/x86-registers.png
![Page 11: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/11.jpg)
Register Layout (64 bits)
http://www.codeproject.com/KB/vista/vista_x64/x64_registers.jpg
![Page 12: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/12.jpg)
Floating Point Registers• Eight 80-bit floating-point data registers
– ST(0), ST(1), . . . , ST(7)
– arranged in a stack
– used for all floating-point arithmetic
• Eight 64-bit MMX registers
• Eight 128-bit XMM registers for single-instruction multiple-data (SIMD) operations
![Page 13: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/13.jpg)
x86 Instructions
• Typical syntax– Mnemonic dst, src
• Some instructions– NOP ; correct way of putting the CPU to sleep– Mov ax, dx– Add cx, 8– Sub bx, 1– Mul al, 2 ;result is stored in ax– Div 4 ;ax is an implicit operator– Jmp– Loop ;cx is implicit count– Cmp bx, 0– Int 24h or 10h ; most common interrupt services
![Page 14: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/14.jpg)
Addressing Modes
• There is always a register in the operation (if it receives an operand)
• Register (default)– Only registers are involved
• Memory – Reading from or writing to memory
• Immediate – A constant in the instruction
• Direct or Indirect– Direct: address is on the instruction– Indirect: address is on another location to be search
![Page 15: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/15.jpg)
Instruction Cycle
http://blog.shamess.info/wp-content/uploads/2008/12/fetch-execute-cycle.png
![Page 16: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/16.jpg)
What happens during an interrupt?
• Could be explicitly called via int mnemonic.
• An execution is never interrupted– Can interrupt after or before executing the
instruction.
• From the OS perspective the activation record of the function is recorded, along with the states of all the variables
![Page 17: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/17.jpg)
MBR and BIOS
• Master Boot Record (MBR)– Decides which OS will boot– Bootloader (e.g. Grub) should be installed on
a dual booting (2 OS) computer
• Basic Input/Output System (BIOS)– Provides basic IO (as the name implies) to
help booting the machine– POST test helps check every hardware
![Page 18: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/18.jpg)
OS Kernel
• Main core of the operating system• Mostly written in C (with many gotos … YES gotos) • In windows the core libraries are in C:\windows
– Common of viruses to attack this area
• In linux the core is scattered– /bin contains binaries– /usr local installs (by user)– /media mounted drives– /dev list of devices
• Usb, serials, parallel ports, hard disk, etc.
– /home user directories– /etc everything else
![Page 19: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/19.jpg)
Device Drivers
• Allow easy access from software to hardware by forcing a pre-defined interface– POSIX (Unix)– Win32 (Windows)
![Page 20: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/20.jpg)
POSIX interface
• Create• Destroy• Open• Close• Read• Write• IOctl• Could we enforce security?
![Page 21: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/21.jpg)
System Calls
• Give the programs access to the HAL
• In C may be called with – System– Exec functions
• In Java via the Runtime
![Page 22: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/22.jpg)
Services
• File system
• Network
• Printer
• Timed services – Cron– Automatic updates
![Page 23: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/23.jpg)
Hypervisor
• A program that acts as the master boot record of the virtual operating systems
• Will be covering more on VMs (virtual machines) in the course
![Page 24: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/24.jpg)
User space
• Applications
• Shell
• Utilities
• Databases
![Page 25: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/25.jpg)
Process and Threads
• A process is an application which passing through its life cycle (i.e. not dead)
![Page 26: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/26.jpg)
Some concepts
• Context switching– Occurs when a process is put to sleep so that another
can continue running– Gives the illusion of multitasking
• Deadlock– If A is waiting for B, B is waiting for C, and C is waiting
for A– In other words a deadlock is a state where no process
can continue– Avoid it with good process philosophies
• Diners, Readers/Writers, Producer/Consumer• A priority queue is a good data structure here
![Page 27: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/27.jpg)
Process and Threads (cont.)
• Process have a process id (pid) and parent process id (ppid)– The main process does not have a parent (i.e. ppid = 0)– Multiple processes share the same memory space
• Pros: easy to communicate• Cons: hard to sync (problem when writing)
• Threads– Local sub-process inside of a process– May be known or unknown to the OS– Multiple processes have their own memory space:
• Pros: not much syncing required• Cons: hard to intercommunicate them
![Page 28: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/28.jpg)
Writing Process and Threads in C/C++
• Fork() creates a process (child) and invokes it– Returns the pid of child to parent– Returns pid to child– A negative number uppon error
• Threads are implemented via pthread.h– Simply call the create function and pass the
function that will be executed by it
![Page 29: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/29.jpg)
Some shells
• Unix– bash– sh– csh
• Windows– cmd
![Page 30: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/30.jpg)
Useful Shell Commands (Unix)• cd: change directory• ls: list files in directory• pwd: shows current path• ifconfig: show/configure network interfaces• cat: display content of a file• pico/nano/vim: some text editors• ps: shows process list• top: shows shell task manager• ping: test network connectivity• traceroute: trace hops in a connection• ssh: opens ssh connection• Help:
– --help flag on commands– Man pages (e.g. man man)
![Page 31: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/31.jpg)
Useful Shell Commands (Windows)
• cd: change directory• dir: list files in directory• cd with no params: shows current path• ipconfig: show/configure network interfaces• edit: some text editors• taskmgr: task manager• regedit: OS register modification• msconfig: shows startup/boot configuration• ping: test network connectivity• tracert: trace hops in a connection• ssh: opens ssh connection• Help:
– Typically /? on commands
![Page 32: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/32.jpg)
Programming with C/C++ and ASM
• Notation used is AT&T ASM (more common among platforms)– Biggest change are explicit size of operand
• Addb, addw, instead of add
– Destination and source are exchanged• i = i + 3• add ax, 3 ; INTEL• add 3, ax ; AT&T
– Some notations• Binary• Decimal• Hex• Registers• Memory
![Page 33: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/33.jpg)
Basic ASM
• asm or __asm__ directive– asm(“command”) //in C– E.g. asm(“add ax, 9”); //in C
• From ASM• .global myfunction• Then in C invoke myfunction
![Page 34: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/34.jpg)
Extended ASM• Allows better communication between C and ASM• Asm(“command” :
output separated by commas : input separated by commas :
optional registers (avoid them));e.g.
int x = 2;int result = 0;int c = 3;__asm__("movl %1, %%eax;"
"addl $3, %%eax;" : "=a" (result) : "r" (x));printf("%d\n", result); //what does this line print?__asm__("imull %%ebx, %%eax;" : "=a" (result) : "a" (result), "b"
(c));printf("%d\n", result); //how about this one
![Page 35: Operating Systems and Computer Architecture Eng. Hector M Lugo-Cordero, MS CIS 4361 Secure OS Admin](https://reader035.vdocuments.net/reader035/viewer/2022062518/56649da65503460f94a92622/html5/thumbnails/35.jpg)
Why is C and ASM important?
• Low level programming gives you better control of the machine
• Allows specifying efficiency in instruction– Compiler doesn’t throw surprises– Faster execution
• Memory mapping– Parts/devices on the machine are mapped to
a specific memory