在Linux系统中,进程被称为任务。
1.内核态:又称系统态,它具有较高的特权,能执行所有的机器指令,能访问
所有的寄存器和存储区域,能直接控制所有的系统资源。
2.用户态 :它具有较低的特权,只能执行规定的机器指令,只能访问进程的存
储空间。在用户态下进程不能与系统硬件相互作用,不能访问系统资源。
进程运行在特权较低的用户态下时,只能通过系统调用(system call)转换为内核态后,才能访问系统空间。
Linux进程由三部分组成:
1.正文段(text):存放程序代码。正文段具有只读的属性。
2.用户数据段(user segment):是进程在运行过程中处理数据的集合,它们是
进程直接进行操作的所有数据(包括全部变量在内),以及进程使用的进程堆栈。
3.系统数据段(system segment):存放着进程的控制信息,即进程控制块。Lin
ux中PCB是名字为task_struct的数据结构。
系统为每个进程分配一个独立的虚拟地址空间。进程的虚拟地址空间被分做两个部分:
1.用户空间。用户进程本身的程序和数据(可执行映象)映射到用户空间中。
2.系统空间。内核被映射到所有进程的系统空间中。它们只允许在具有较高特权的内核态下访问。
Linux操作系统包括三种不同类型的进程。
1.交互进程:这种进程经常与用户交互。典型的有shell进程、文本编辑进程及图形应用程序。
2.批处理进程:这种进程不必与用户交互,因此经常在后台运行。典型的有编译程序、数据库搜索引擎及科学计算。
3.守护进程:Linux系统启动时启动的进程,并在后台运行。
使用名为task_struct的进程控制块来管理linux的进程。
所有的task_struct的指针都存放在task数组中,task数组又称为task向量
原文:https://www.cnblogs.com/theda/p/12006712.html