- •Операционные системы
- •Ограниченный и
- •Ограниченный и
- •Ограниченный и
- •Ограниченный и
- •Процессы. Основные сведения
- •Диаграмма состояний процесса в UNIX
- •Дескриптор процесса и структура task_struct
- •Структура task_info
- •Структура task_info
- •Диаграмма состояний процесса в UNIX
- •Создание нового процесса
- •COW (copy-on-write)
- •Функция fork()
- •Функция copy_process()
- •Функция copy_process()
- •Функция copy_process()
- •Функция copy_process()
- •Process, thread, task?
- •Process and threads
- •Завершение процесса
Операционные системы
Лекция 2. Ядро и процессы
Ограниченный и
привилегированный режимы
Ограниченный режим
Процесс 1 |
Процесс 2 |
Процесс 3 |
Процесс 4 |
Процесс 5 |
Процесс 6 |
Процесс 7 |
Процесс N |
ЯДРО ОС
Привилегированный
режим
Ограниченный и
привилегированный режимы
Память после загрузки программы
0 |
1 |
2 |
3 |
4 |
|
|
|
|
|
8f |
00 |
00 |
00 |
01 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
5d |
8f |
00 |
00 |
00 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
02 |
3a |
5a |
00 |
00 |
Команда языка |
Машинная |
ассемблера |
команда |
MOV EAX, 1 |
8f 00 00 00 01 |
MOV [0], 8f 00 00 00 |
5d 8f 00 00 00 |
02 |
02 |
JMP 0 |
3a 5a 00 00 |
Ограниченный и
привилегированный режимы
Память после выполнения команды JMP
0 |
1 |
2 |
3 |
4 |
|
|
|
|
|
8f |
00 |
00 |
00 |
02 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
5d |
8f |
00 |
00 |
00 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
02 |
3a |
5a |
00 |
00 |
Команда языка |
Машинная |
ассемблера |
команда |
MOV EAX, 1 |
8f 00 00 00 01 |
MOV [0], 8f 00 00 00 |
5d 8f 00 00 00 |
02 |
02 |
JMP 0 |
3a 5a 00 00 |
Какая команда языка ассемблера будет соответствовать машинной команде, расположенной в ячейке по адресу 0?
Ограниченный и
привилегированный режимы
Память после выполнения команды JMP
0 |
1 |
2 |
3 |
4 |
|
|
|
|
|
8f |
00 |
00 |
00 |
02 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
5d |
8f |
00 |
00 |
00 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
02 |
3a |
5a |
00 |
00 |
Команда языка |
Машинная |
ассемблера |
команда |
MOV EAX, 1 |
8f 00 00 00 01 |
MOV [0], 8f 00 00 00 |
5d 8f 00 00 00 |
02 |
02 |
JMP 0 |
3a 5a 00 00 |
MOV EAX, 2 |
Процессы. Основные сведения
Определения процесса:
Процесс — это программа, которая выполняется под управлением ОС
Процесс — это программа (т.е. объектный код, хранящийся на каком-либо носителе информации), которая находится в состоянии выполнения.
Компоненты процесса:
Сегмент кода (text section)
Сегмент данных (data section)
Сегмент стека (stack section)
Счетчик команд (program counter) Также процесс может включать:
Права и полномочия
Ресурсы, выданные в пользование процесса операционной системой
Диаграмма состояний процесса в UNIX
Дескриптор процесса и структура task_struct
Структура task_info
Структура task_info
struct thread_info { |
*task; |
|
struct task_struct |
||
struct exec_domain |
*exec_domain; |
|
__u32 |
flags; |
|
__u32 |
status; |
|
__u32 |
cpu; |
|
int |
preempt_count; |
|
mm_segment_t |
addr_limit; |
|
struct restart_block |
restart_block; |
|
void |
*sysenter_return; |
|
}; int |
uaccess_err; |