tailieunhanh - The kernel’s task list
The kernel’s task list presents about Multi-tasking, Stacks and task-descriptors, What’s on a program’s stack, Switching to a different stack, Supporting structures, A task’s virtual-memory layout, The Linux process descriptor. | The kernel’s task list Introduction to process descriptors and their related data-structures for Linux kernel version Multi-tasking • Modern operating systems allow multiple users to share a computer’s resources • Users are allowed to run multiple tasks • The OS kernel must protect each task from interference by other tasks, while allowing every task to take its turn using some of the processor’s available time Stacks and task-descriptors • To manage multitasking, the OS needs to use a data-structure which can keep track of every task’s progress and usage of the computer’s available resources (physical memory, open files, pending signals, etc.) • Such a data-structure is called a ‘process descriptor’ – every active task needs one • Every task needs its own ‘private’ stack What’s on a program’s stack? Upon entering ‘main()’: • A program’s exit-address is on user stack • Command-line arguments on user stack • Environment variables are on user stack During execution of ‘main()’: • Function parameters and return-addresses • Storage locations for ‘automatic’ variables Entering the kernel A user process enters ‘kernel-mode’: • when it decides to execute a system-call • when it is ‘interrupted’ (. by the timer) • when ‘exceptions’ occur (. divide by .
đang nạp các trang xem trước