Основные понятия о процессах операционной системы Linux

Оглавление

1. Компьютерная архитектура фон Неймана

2. Операционная система (Операторская система)

3. Системные вызовы и библиотечные функции

4.Процесс

4.1 Описание процесса печатной платы

4.2 Организационный процесс

4.3 Просмотр процесса

4.4 Получение идентификатора процесса посредством системного вызова

4.5 Создание процессов посредством системных вызовов

4.6 Статус процесса

4.7 Зомби-процессы

4.7.1 Опасности зомби-процессов

4.8 Сиротские процессы

4.9 Приоритет процесса

5. Другие концепции


1. Компьютерная архитектура фон Неймана

输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等

Память здесь относится к памяти.
Независимо от ситуации с кэшем, процессор здесь может и может только читать и записывать память и не может получить доступ к периферийным устройствам (устройствам ввода или вывода).
Периферийным устройствам (устройствам ввода или вывода) необходимо вводить или выводить данные. , и Можно только записывать или читать из памяти.
Словом, все устройства могут иметь дело только с памятью напрямую.

2. Операционная система (Операторская система)

Концепция: Это относится к контролю и управлению аппаратными и программными ресурсами всей компьютерной системы, а также к рациональной организации и планированию работы компьютера и распределению ресурсов для предоставления пользователям и другому программному обеспечению удобных интерфейсов и сред. Это самый основной аспект компьютера. система, системное программное обеспечение.

Обычно понимают, что операционные системы включают в себя:

Ядро (управление процессами, управление памятью, управление файлами, управление драйверами)

Другие программы (такие как библиотеки функций, программы оболочки и т. д.)

Цель проектирования ОС:

Взаимодействуйте с оборудованием и управляйте всеми программными и аппаратными ресурсами.

Обеспечить хорошую среду выполнения пользовательских программ (приложений)

3. Системные вызовы и библиотечные функции

С точки зрения разработки операционная система будет видна внешнему миру целиком, но она будет предоставлять некоторые из своих интерфейсов для разработки верхнего уровня.Эта часть интерфейса, предоставляемая операционной системой, называется системным вызовом.

С точки зрения использования функции системных вызовов относительно просты, а требования к пользователям относительно высоки. Поэтому вдумчивые разработчики могут соответствующим образом инкапсулировать некоторые системные вызовы для формирования библиотек. С библиотеками это очень полезно для пользователей более высокого уровня или разработчиков. провести вторичное развитие.

4.Процесс

Понятия учебника: исполнительный экземпляр программы, исполняемая программа и т. д.

Перспектива ядра: объект, ответственный за распределение системных ресурсов (процессорное время, память).

4.1 Описание процесса печатной платы

Информация о процессе помещается в структуру данных , называемую блоком управления процессом , которую можно понимать как набор атрибутов процесса. В учебнике он называется PCB (блок управления процессом).

Другими словами, Task_struct — это тип печатной платы.

Структура, описывающая процесс в Linux, называется Task_struct. Task_struct — это структура данных ядра Linux, которая загружается в оперативную память (память) и содержит информацию о процессе.

Содержимое структуры Task_ содержит следующее

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息

4.2 Организационный процесс

Его можно найти в исходном коде ядра. Все процессы, запущенные в системе, хранятся в ядре в виде связанных списков Task_struct.

4.3 Просмотр процесса

Следующая команда находит тестовый процесс, который мы создали сами, с помощью конвейерной фильтрации grep.

4.4 Получение идентификатора процесса посредством системного вызова

进程id(PID)
父进程id(PPID)

4.5 Создание процессов посредством системных вызовов

运行 man fork 认识fork
fork有两个返回值,子进程返回0,父进程返回子进程pid,创建子进程失败时,父进程返回小于0的值
父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)
fork 之后通常要用 if 进行分流 

4.6 Статус процесса

В ядре Linux процессы иногда называют задачами.Ниже приводится определение статуса процесса в исходном коде ядра.

/*
* The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
static const char * const task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};
R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列
里。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠
(interruptible sleep))。
D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的
进程通常会等待IO的结束。
T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可
以通过发送 SIGCONT 信号让进程继续运行。
X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

4.7 Зомби-процессы

僵死状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用,后面讲)
没有读取到子进程退出的返回代码时就会产生僵死(尸)进程
僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。
所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

4.7.1 Опасности зомби-процессов

进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎
么样了。可父进程如果一直不读取,那子进程就一直处于Z状态?是的!
维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,换句话
说,Z状态一直不退出,PCB一直都要维护?是的!
那一个父进程创建了很多子进程,就是不回收,就会造成内存资源的浪费?是的!因为数据结构
对象本身就要占用内存

Статус завершения процесса должен сохраняться, поскольку он должен сообщать процессу, который о нем заботится (родительскому процессу), насколько хорошо я выполнил задачу, которую вы мне дали. Но если родительский процесс никогда не читает, то дочерний процесс всегда будет в состоянии Z? Да!
Поддержание статуса выхода само по себе требует обслуживания данных, и это также основная информация о процессе, поэтому она хранится в Task_struct (PCB).Другими словами, состояние Z никогда не выйдет из состояния, и печатную плату всегда нужно будет поддерживать. ? Да! Этот родительский процесс создал множество дочерних процессов, но если они не будут переработаны, ресурсы памяти будут потрачены впустую.

4.8 Сиротские процессы

父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢?
父进程先退出,子进程就称之为“孤儿进程”
孤儿进程被1号init进程领养,当然由init进程回收。

4.9 Приоритет процесса

Порядок распределения ресурсов ЦП относится к приоритету процесса. Процессы с более высоким приоритетом имеют право приоритетного выполнения. Настройка приоритетов процессов очень полезна для Linux в многозадачной среде и может повысить производительность системы. Вы также можете запустить процесс на выделенном процессоре.Таким образом, планирование неважных процессов на определенном процессоре может значительно улучшить общую производительность системы.

 PRI: представляет приоритет, с которым этот процесс может быть выполнен. Чем меньше значение, тем раньше он будет выполнен.

NI: представляет ценность этого процесса

Диапазон значений nice составляет от -20 до 19, всего 40 уровней.

PRI=OldPRI (постоянная настройка 80)+NI

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进
程的优先级变化。

5. Другие концепции

竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高
效完成任务,更合理竞争相关资源,便具有了优先级
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为
并发

рекомендация

отblog.csdn.net/m0_74234485/article/details/132548159
рекомендация