4 linux线程与进程

第4章 进程与线程 4.1进程 2.进程 什么是程序? 进程的定义:可并发执行的程序在一个数据集合上的运行过程。 进程的特性 动态性:进程具有一定的生命周期,它由创建而产生,由调度而执行,因得不到自由而暂停执行,由撤销而消亡。 并发性:多个进程在同一时间内同时执行(有别于并行) 独立性:系统中处理机调度的基本单位,系统自由分配的基本单位。 异步性:进程安装独立的、不可确定的时间发生 4.进程的状态及转换 一、进程的基本状态 执行态:进程获得CPU,开始执行 就绪态:已经获得除CPU之外的资源 阻塞(等待)态:进程遇到某些阻塞事件二暂停执行的状态 二、进程的状态转换 5、进程的组成 程序段 数据段 进程控制块(Process Control Block) 1.系统为了管理进程设置了一个专门的数据结构,用于记录进程的外部特征,描述进程的动态变化过程,这就是PCB。 2.PCB的内容: 记录了管理进程所必须的信息 标识信息 进程表示(进程名字、内部标识)、用户名 说明信息 进程状态、等待原因、进程程序和数据的存储信息 现场信息 记录保存了重要寄存器、时钟等内容,用于恢复断点 管理调度信息 进程优先数、进程队列指针、消息队列指针、进程使用的资源清单、进程家族关系、进程当前打开的文件 进程控制块(Process Control Block) 1.系统为了管理进程设置了一个专门的数据结构,用于记录进程的外部特征,描述进程的动态变化过程,这就是PCB。 2.PCB的内容: 记录了管理进程所必须的信息 标识信息 进程表示(进程名字、内部标识)、用户名 说明信息 进程状态、等待原因、进程程序和数据的存储信息 现场信息 记录保存了重要寄存器、时钟等内容,用于恢复断点 管理调度信息 进程优先数、进程队列指针、消息队列指针、进程使用的资源清单、进程家族关系、进程当前打开的文件 3.PCB表 为了便于管理,把所有PCB用数组或链表组织在一起 进程的控制 1、CPU的两种执行状态 为了保护系统中的关键数据不被侵犯采取的措施。 (1)系统态:CPU能执行任何指令,能访问任何寄存器、存储器 (2)用户态:不能执行特权指令,不能随意访问寄存器、存储器 2.操作系统的内核 中断处理 时钟管理 原语操作:指具有原子性的操作。要么全完成,要么全不完成。 进程管理 存储器管理 设备管理 3.进程的创建时机 用户登陆 作业调度 提供服务 应用请求 4。进程创建过程 取得一个空白PCB 为进程分配必要的资源 初始化PCB 将PCB插入就绪队列 5.Linux中的进程创建 Linux在启动时运行在核心态,此时只有初始化程序在执行——初始进程 系统初始化结束时,初始进程启动一个核心进程(线程)init,然后执行空循环,什么也不做。 除init外,所有进程都是由其他进程创建的。 什么是Init进程? Init进程的进程表示号为1,是系统中第一个真正的进程,是其他进程的祖先 Linux中 如何创建进程? linux中提供了系统调用函数fork和clone,用来创建子进程 do_fork()函数:是内核函数, fork和clone是通过此函数完成子进程的创建 6.进程的终止 (1)进程终止的时机 进程的正常结束 在进程执行期间调用exit,或在main函数中执行return语句,或者main函数执行完,进程就正常结束。 进程的异常结束 由于出现错误或故障而被迫结束。如:程序访问越界的内存、特权指令错、被0除、电源故障等。 在linux中,进程调用abort或收到进程外所发来的信号而结束,就是异常结束。 6.进程的终止 (2)进程终止的过程 不管进程是正常还是异常结束,都是由OS内核的进程终止原语来完成进程的终止。 进程的终止原语完成的工作: 1)取得当前进程的PCB 2)归还进程所占的资源,如:关闭打开文件、退出文件系统等 3)进入进程调度程序 6.进程的终止 (3)linux中的进程终止 通过调用内核函数do_exit() do_exit()的工作过程: 首先取得当前进程task_struct结构 根据PCB中的内容进行资源的归还 通知其父进程和子进程“我将结束” 最后调用内核函数schedule()重新进行进程调度 7.进程的阻塞和唤醒 (1)进程阻塞和唤醒的时机 当进程请求系统为它服务时,系统不能马上提供服务,此时进程进入阻塞态 启动了无法马上完成的操作,如I/O操作,则进入阻塞态;当I/O操作完成时,系统会唤醒该进程。 进程间相互合作时,需要等其他进程的运行结果,此时进入阻塞态;直到运算结果出来,则被唤醒。 有些系统服务进程,如:打印服务进程 7.进程的阻塞和唤醒 (2)进程阻塞的过程 阻塞是

linux线程 ppt,4 linux线程与进程.ppt相关推荐

  1. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  2. Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制

    线程概念 线程与进程 线程间的独有与共享 多线程与多进程 线程控制 线程概念 什么是线程 线程是进程中的一条执行流,执行程序中的某部分代码.linux下没有具体实现的线程,只有库函数用pcb来实现的线 ...

  3. .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...

    今天来了解一下linux里面的一些小知识: (一)Linux系统中最大可以起多少个进程? (1)32位系统中最多可以起32768个进程 (2)64位系统中最多可以起2的22次方(4194304)约42 ...

  4. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)

    对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...

  5. linux知识(一) 程序、进程与线程

    linux知识(一) 程序.进程与线程 程序 进程 程序如何变成进程? 线程 线程与进程 fork和创建新线程的区别 优点 程序 程序:程序是已编译好的二进制文件,存储在磁盘中,不占用系统资源 程序包 ...

  6. Linux的进程/线程/协程系列4:进程知识深入总结:上篇

    Linux的进程/线程/协程系列4:进程/线程相关知识总结 前言 本篇摘要: 1. 进程基础知识 1.1 串行/并行与并发 1.2 临界资源与共享资源 1.3 同步/异步与互斥 1.4 进程控制原语 ...

  7. linux的进程/线程/协程系列1:进程到协程的演化

    linux的进程/线程/协程系列1:进程到协程的演化 前言 摘要: 1. 一些历史:批处理时代 2. 现代操作系统启动过程 3. 进程(process)的出现 4. 线程(thread)与线程池 5. ...

  8. cef linux 多线程模式,CEF3开发者系列之进程和线程

    CEF3是一个多进程架构框架,如果有了解过chromium的进程架构的,那么就很容易了解CEF3的多进程了.打开CEF3源代码中发布的cefclient实例,如果打开的页面带有flash或者其他插件. ...

  9. Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程

    一.定义 再看正文之前我要先强调一下几点: 1. Linux中没有真正的线程,但windows中确实有线程 2. Linux中没有的线程是由进程来模拟实现的(又称作:轻量级进程) 3. 所以在Linu ...

  10. Linux系统中查看LWP(轻量级进程)、进程 、 线程的ID的方法

    现代操作系统中,进程支持多线程 . 进程是分配资源(资源管理)的最小单元:而线程是调度资源(程序执行)的最小单元.Linux中没有真正的线程,线程是由进程来模拟实现的(又称作:轻量级进程). 所以在L ...

最新文章

  1. 一目了然“之IT运维可视化,让运维不再说难!
  2. java类型过滤文本_JAVA实现过滤掉文本中的表情
  3. 爬虫里的多线程基本使用
  4. C语言入门篇(二)指针的介绍和运用
  5. linux 常用正则表达式,Linux中基本正则表达式
  6. Ubuntu安装nextcloud-17.0.1
  7. 基于vue开发简易备忘录,实现列表增删
  8. 【C语言】中的stdbool.h头文件
  9. Android UI设计中一些不错的示例及第三方控件
  10. 本科生毕业论文查重率多少合适?
  11. PBRT 阅读 第一章
  12. Android相同包名不同签名的apk安装失败问题分析
  13. Mockito单元测试
  14. 测开之路三十三:Flask实现扎金花游戏
  15. Excel文件导出,前端导出或者后端导出
  16. 使用 easypoi 导出带三级下拉联动的 excel
  17. 全新来客码智能纳客营销系统免费使用功能效果
  18. java记事本教程_Java实战_手把手编写记事本
  19. java基础笔记05~汪汪汪~
  20. 唐纳德与子串 Hard

热门文章

  1. Android Studio 解决错误 Could not find method android() for arguments
  2. 字符串汉字提取首字母
  3. 【idea】IDEA 出现问题:Error running xxx Command line is too long. Shorten command line 解决方案
  4. Color--颜色值以及颜色属性(学习记录)
  5. linux日志定时清理
  6. 网易大咖分享之从Unity_RagDoll系统科普到动画全部基础原理
  7. 数据库语句where、on、having的区别
  8. 7bit解码 java_7bit编码 - 莫问viva的个人空间 - OSCHINA - 中文开源技术交流社区
  9. QTP脚本运行次数的设置
  10. 十四、FLUENT中2D Space设置