CSC 660 Advanced OS Introduction CSC 660 Advanced














































- Slides: 46

CSC 660: Advanced OS Introduction CSC 660: Advanced Operating Systems 1

Who am I? http: //www. nku. edu/~waldenj 1 James Walden – Assistant Professor of Computer Science – [email protected] edu – Interests: • • Software Assurance Information Security Programming Languages Network Security CSC 660: Advanced Operating Systems 2

Course Administration Web Site http: //www. nku. edu/~waldenj 1/classes/2006/spring/csc 660 Notes, readings, and assignments on web site. Assignment submission Send electronic submissions to [email protected] edu Contact Information Email: [email protected] edu Phone: (859) 572 -5571 Office Hours: MW 3: 00 -4: 00, R 3: 00 -4: 00 CSC 660: Advanced Operating Systems 3

Course Information Prerequisites CSC 560, CSC 601 Laboratory Facilities FH 102 VMWare image Textbooks Linux Kernel Development, 2 nd edition, Robert Love, Prentice-Hall, 2005. Understanding the Linux Kernel, 3 rd edition, Daniel P. Bovet and Marco Cesati, O’Reilly, 2005. CSC 660: Advanced Operating Systems 4

Course Goals 1. A deep understanding of operating system principles. 2. A solid grasp of how the Linux kernel works. 3. An understanding of Linux/POSIX programming interfaces. 4. Ability to read and understand a large base of legacy code. 5. Ability to reliably make modifications to a large code base. CSC 660: Advanced Operating Systems 5

Grading Grades are based on – Individual programming assignments. – Group projects. CSC 660: Advanced Operating Systems A B C D F 90 -100 80 -89 70 -79 60 -69 0 -60 6

Assignment Policy Available on web page. Your responsibility to check for announcements. Types of assignments Individual programming assignments. Group programming assignments. Late policy 20% penalty up to one week late 0 points given after one week late Submission format E-mail tar archive to [email protected] edu. Tar archive must be named username-as#. tar CSC 660: Advanced Operating Systems 7

Topics A first look at four important questions: – What is the kernel? – What can we learn about a running kernel? – How is the kernel source structured? – How do we build the kernel? In lab, you’ll get an introduction to – The virtual development environment (Debian Linux under VMWare Player) – Building the kernel. CSC 660: Advanced Operating Systems 8

What is an OS kernel? Program that is always running. – Manages resources. – Provides services. Layering – Layer between programs and hardware. – Layer between users (multiuser OS). – Layer between programs (multitasking OS). CSC 660: Advanced Operating Systems 9

What is an OS kernel? CSC 660: Advanced Operating Systems 10

Resource Management Allocation Allocates finite resources among competing processes. CPU, memory, disk, network Protection Prevents processes from interfering with each other. Reclamation Voluntary at runtime; automatic at termination. Virtualization Provides illusion of private unshared resources Timeshared CPU, Virtual Memory, Virtual Machines CSC 660: Advanced Operating Systems 11

What is the Linux kernel? Free open source UNIX-compatible kernel. Created by Linus Torvalds. Developed by thousands across the world. Coordinated via linux-kernel mailing list. CSC 660: Advanced Operating Systems 12

Kernel History 0. 01 1. 0 1. 2 2. 0 2. 2 2. 4 2. 6 First version released by Linus (1991). First release (x 86 only) in 1994. Supports other CPUs (Alpha, MIPS) in 1995. SMP support, more architectures (1996). Efficient SMP, more hardware support (1999). LVM, Plug-n-Play, USB, etc. (2001). Scalability (embedded, NUMA, PAE, sched), kernel pre-emption, User-mode linux (2003). CSC 660: Advanced Operating Systems 13

Version Numbering: A. B. C. D A: Major version Changed twice: 1. 0 (1994), 2. 0 (1996) B: Minor version Even numbers are stable releases Odd numbers are development releases C: Minor revision Not so minor in 2. 6 as development continues. D: Bug-fix / security patch release First occurred with NFS bug in 2. 6. 8. 1 Official policy as of 2. 6. 11 CSC 660: Advanced Operating Systems 14

Kernel Versions mm: Andrew Morton tree New patches, almost ready for distribution. ac: Alan Cox tree Distribution trees Red. Hat Mandrake Debian Gentoo, etc. CSC 660: Advanced Operating Systems 15

Identifying the Running Kernel > uname Linux > uname -r 2. 6. 10 > cat /proc/version Linux version 2. 6. 10([email protected] 660) (gcc version 3. 3. 5) #3 Sun Dec 25 10: 22: 50 EST 2005 CSC 660: Advanced Operating Systems 16

Investigating the Running Kernel: /proc ###: directory for each running process cpuinfo: processor information devices: supported hardware diskstats: disk performance statistics meminfo: memory usage information modules: linux kernel modules net: directory of network information partitions: linux disk partitions swaps: swap files/partitions in use by kernel self: link to ### directory for current process CSC 660: Advanced Operating Systems 17

Process information > ls -al. F /proc/self dr-xr-xr-x 2 jw jw 0 -r---- 1 jw jw 0 -r--r--r-- 1 jw jw 0 lrwxrwxrwx 1 jw jw 0 -r---- 1 jw jw 0 lrwxrwxrwx 1 jw jw 0 dr-x------ 2 jw jw 0 -r--r--r-- 1 jw jw 0 -rw------- 1 jw jw 0 -r--r--r-- 1 jw jw 0 lrwxrwxrwx 1 jw jw 0 -r--r--r-- 1 jw jw 0 dr-xr-xr-x 3 jw jw 0 -r--r--r-- 1 jw jw 0 2005 -12 -29 2005 -12 -29 2005 -12 -29 2005 -12 -29 13: 46 13: 46 13: 46 13: 46 CSC 660: Advanced Operating Systems attr/ auxv cmdline cwd -> /proc/20041/ environ exe -> /bin/bash* fd/ maps mem mounts root -> // statm status task/ wchan 18

Process information > cd /proc/self > cat cmdline ; echo -bash > cat environ | tr '