进程 线程 总结

本文详细介绍了进程的概念、程序与进程的区别、进程包含的主要部分、Linux下的进程结构、进程类型、进程运行状态以及进程的属性。同时,阐述了进程的并发性、动态性、交互性、独立性与异步性,并对Linux下的进程类型进行了分类,包括交互进程、批处理进程与守护进程。此外,文章还讨论了进程的结构、状态以及如何管理进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程的基础(1):

1 .进程的概念:独立的,可调度的任务
    1.是一个抽象的实体,当系统在执行某个程序时,分配和释放各种资源。

     2.是一个程序执行一次的过程。

程序和进程的区别:

1.    程序是静态的,保存在磁盘上的指令的有序集合,没有任何执行的概念。

2.    进程时一个动态的,概念,是执行的过程,包括。创建,调度,和消亡。

3.    进程是程序执行和资源管理的最小单位。

进程包含:

 

1.正文段

2.用户数据段

3.系统数据段

进程不仅包含程序的指令和数据,还包含程序计数器值,cpu的所有寄存器值,以及临时数据的进程堆栈。

2.Linux 下的进程结构

1.主要的进程标示

       1.进程号

       2.父进程号

       3.优先级

       4.运行时间

5. 占用的文件描述符。

2.pid 唯一的标识一个进程。

3.进程的三个段

       1). 数据段:存放的全局变量,常数,动态数据分配的,数据空间(malloc)

       2). 正文段:存放的程序的代码。

       3). 堆栈段:存放的是函数返回地址,函数的参数以及程序的返回局部变量。

3.     Linux 下的进程类型

1.     交互进程: 由 shell 控制和运行。交互进程既可以在前台,也可以在后台进行。

2.     批处理进程:该进程不属于某个终端,提交到一个队列,顺序执行。

3.     守护进程:后台进行。在linux 启动开始执行,系统关闭时结束。

4.     Linux 下的进程运行状态

1.      运行态:进程在运行或者,准备运行

2.      等待态:等待一个事件或某种资源

1.      可中断(可以被信号打断)(contrl + c 终止)

2.     不可中断

3.停止态:进程被终止

       4.死亡态:已终止的进程,在进程还有一个task_struct 结构。(contr + z 挂起,

 






































进程的属性(2):

1.         并发性:进程可以同时并发,相互之间互不干扰。

2.         动态性:进程有完整的生命周期,状态不断变化,动态的地址空间(代码,数据,进程控制块,)。

3.         交互性: 在执行过程中会与其他的进程进行直接或者间接地交互操作,同步和互斥,添加一些进程处理机制。

4.         独立性: 有一个完整的资源分配和调度的基本单位,进程的地址空间是相互独立的,只有采用某些通信机制才能实现进程间的通信。

5.         异步性 :独立,与不可预知性。

进程的类型:

1.           交互进程: 经常与用户交互,花时间等待用户的操作(shell 命令进程,文本编辑器,图形应用程序的运行)

2.           批处理进程: 不必与用户交互,后台运行,(编译,搜索)

3.           实时进程: 时间的调度要求较高,响应时间快,

进程的结构“

1.         指令和数据,程序计数器,处理器的所有寄存器,存储临时数据的进程堆栈,正在处理的进程包含处理器的一切活动。

2.         Linux 是多进程的os 必须分配等待,调度。

3.         所有的进程存放在双向的循环链表中,(进程链表),头是init_task 描述符。每一项类型是task_struct  称为 进程描述符的结构。

进程的状态:

1.           运行,可中断的等待,不可中断的等待,停止太,僵尸态。

进程的小结:

1.         Pid 内核之中唯一的标识一个进程。Short 的字节长度 2的16次方减1 可以再/proc/sys/kernel/pid_max 来确定。

2.         有一个指向task_struct的currnet的指针记录正在执行的进程。

3.         Fork 函数采用的写时复制页技术,内核创建进程时其资源没有没有复制过来,资源的复制仅仅是在需要写入时才复制。此前一直是共享数据。

4.         进程的终止必须保证占用资源的回收。并且通知父进程。Linux 先将其设为僵尸态,进程无法投入运行,他的存在只是为父进程提供死亡的信息。申请死亡。父进程得到进程信息,调用wait 族函数终止进程,子进程占用的多有资源被释放。

5.         进程的内存结构:

a)       . linux  os 采用虚拟内存管理技术,4Gb 的线性虚拟空间。用户看到的和接触的是这虚拟空间。用户(0~ 3GB) 内核空(3GB~ 4GB),不能访问内核空间,只有用户调用系统调用才可以访问内核空间,(用户进程在内核态执行),内核负责地址空间的映射。

b)       . 只读段: 程序源码和只读的数据

c)       数据段: 全局和静态变量。其中可读可写的数据段已经存放在.data段 ,bbs 数据段存放在未初始化数据段(全局和静态变量)。

d)       堆栈段: 系统自动分配,释放,存放函数的参数,局部和返回地址。

e)       堆: 放动程序员态分配的数据,

f)        共享库的内存映射区,动态连接器和共享库的映射区域。

g)       Linux 下的每一个进程都会在/proc 文件系统下与之对应一个目录。

 

Linux 下线程的分类:

1.         用户级线程: 上下文切换问题,调度算法和调度全过程有用户自行选择。Os 提供了一个线程创建,调度,撤销的功能,内核任然只对进程进程进行管理。若某个进程和总的线程调用了一个阻塞的系统调用,进程中的其他线程也同时阻塞。缺点是无法发挥多处理器的优势

2.         轻量级的进程: 内核支持的进程。内核线程的抽象对象。一个线程有多个轻量级的进程,每个轻量级的进程绑定在内核线程上

3.         内核线程: 允许不同进程中的线程按照统一调度方法调度,发挥多处理器的优势。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值