进程基本概念汇总共69页文档
- 格式:ppt
- 大小:10.52 MB
- 文档页数:69
进程概念介绍进程概念介绍每次写笔记的时候总有⼀种想法,担⼼这个观点是错误的.担⼼我学到的内容是问题了,从⽽给看笔记的同学们传递⼀种错误的知识.希望看笔记的同学带疑惑的去看去思考,我写的是不是有问题,发现错误了希望您也能反馈给我.我也从中学到得到.什么是进程 了解进程之前,需要先了解⼀下什么是程序,程序就是⼀个存放在磁盘的有序指令集合,是静态的;⽽进程可以简单理解成磁盘中程序的⼀个副本,只不过这个副本时动态的,运⾏台内存空间中.⽽且⼀个进程不单单只运⾏你指定的运⾏程序的代码或部分代码,还包括了程序运⾏时需要的各种库⽂件和数据信息. 同时还要⼀个概念那就是线程,线程是计算机CPU调度的最⼩单位,⼀个进程中可能包含⼀个线程,也可能包含多个线程.线程就好⽐公司的员⼯,⽽进程就相当于⼀个公司,⼀个⼩公司可能⽼板和员⼯是同⼀个⼈,同样的⼩进程中就只有⼀个线程,有的公司还有很多员⼯,同样进程也可能有很多线程同时⼯作.进程的组成结构 进程是在进程队列task list中调度进程的,进程队列⼜是由⼀个⼀个的进程结构体task_sturck组成的双向循环结构.可以说⼀个进程结构体就管理着⼀个进程,所以这种进程结构体⼜称为进程控制块⼀个进程结构体中包含: 进程的ID ⽤户ID 和组ID 程序计数器 进程的状态:就绪态执⾏态睡眠态阻塞态 进程切换时需要保存和恢复的CPU寄存器中的值 描述虚拟内存分配的地址信息 描述控制终端的信息 当前⼯作⽬录 ⽂件描述符表,包含很多指向file结构体的指针 进程可以使⽤的资源上线 输⼊输出状态:配置进程使⽤IO设备进程眼⾥的天地:虚拟内存空间 进程是运⾏在虚拟内存空间的,在进程眼⾥虚拟内存就只有⾃⼰和内核.⾃⼰完全享有内核和CPU等硬件资源. 如下图是以32为系统为例,进程以为⾃⼰完全享有0-3G的虚拟内存,3G-4G内存是内核占有的.进程可供⾃⼰完全⽀配的这部分空间称为⽤户空间,内核占有的那部分空间称为内核空间. ⽤户空间划分为五个段: 代码段:Text Segment,这⾥存放了进程执⾏时需要⽤到的代码.所以这部分是只读的. 数据段:Data Segment,这⾥⽤来存放已经初始化且值不为0的全部变量和静态局部变量 BSS段::Block Started by Symbol,存放了未初始化或者已经初始化但是值为0的全局变量和静态局部变量 堆:heap,⽤于存放数组和对象,堆是⽤来存放进程运⾏中被动态分配的内存段,它的⼤⼩不固定,可动态扩展或酸碱,单进程调⽤malloc 等函数分配内存时,新分配的内存就被动态添加进堆中,当利⽤free函数释放内存时,就是从堆中剔除该内存.同时因为在不断的malloc 和free这部分内存空间是不连接的,所以堆是⽤链表结构来储存数据的. 栈:stack,栈是⽤来存放新创建的局部变量和函数参数,参数返回值.由于栈的后进先出特性,栈特别⽅便⽤来保存恢复调⽤现场,即某个进程运⾏中产⽣在CPU寄存器中的数据. 内核空间: 内核空间是属于操作系统的⼀部分常驻内存,操作系统不允许普通⽤户的应⽤程序读写这个区域的内容或者直接调⽤内核空间中定义的函数.虚拟内存和物理内存的关系: 存放进程的虚拟内存最终会映射到物理内存当中.物理内存是怎么分配的呢? 操作系统会把物理内存划分成⼀个⼀个的页框,页框的⼤⼩⼀般是4k,可以使⽤ Getconf -a | grep -i size 来搜索查看page 的⼤⼩.[root@CentOS7 411]# getconf -a | grep -i sizePAGESIZE 4096PAGE_SIZE 4096SSIZE_MAX 32767 在进程看来虚拟内存是连续的,⽽物理内存分配的内存页不⼀定是连续的,就会出现⼀种出现⼀种奇怪的映射关系,虚拟内存可能对应这多个不连续内存页 可以使⽤pmap命令来查看某个程序的具体物理地址映射表.也可以通过查看/proc/⽬录下对应PID⽬录中的maps⽂件[root@CentOS7 proc]# pmap 863863: /usr/sbin/sshd -D000055ceab69c000 800K r-x-- sshd000055ceab963000 16K r---- sshd000055ceab967000 4K rw--- sshd000055ceab968000 36K rw--- [ anon ]000055ceac9a4000 132K rw--- [ anon ]00007f9732117000 48K r-x-- libnss_files-2.17.so00007f9732123000 2044K ----- libnss_files-2.17.so[root@CentOS7 proc]# cat /proc/863/maps55ceab69c000-55ceab764000 r-xp 0000000008:03464614 /usr/sbin/sshd55ceab963000-55ceab967000 r--p 000c7000 08:03464614 /usr/sbin/sshd55ceab967000-55ceab968000 rw-p 000cb000 08:03464614 /usr/sbin/sshd55ceab968000-55ceab971000 rw-p 0000000000:00055ceac9a4000-55ceac9c5000 rw-p 0000000000:000 [heap]7f9732117000-7f9732123000 r-xp 0000000008:0346532 /usr/lib64/libnss_files-2.17.so7f9732123000-7f9732322000 ---p 0000c000 08:0346532 /usr/lib64/libnss_files-2.17.so7f9732322000-7f9732323000 r--p 0000b000 08:0346532 /usr/lib64/libnss_files-2.17.so7f9732323000-7f9732324000 rw-p 0000c000 08:0346532 /usr/lib64/libnss_files-2.17.so 虚拟内存是通过CPU中的MMU(Memory Mnagement Unit)完成虚拟内存地址和物理内存地址之间的转换.程序在访问虚拟内存地址时,这个虚拟内存地址就会先发送给MMU,MMU计算出来实际的物理地址,然后再通过总线去访问实际的物理地址.进程状态 进程的基本状态: 创建态:进程在创建时需要申请⼀个空⽩的进程控制块PCB,向其中填写空间和管理进程的信息,完成资源分配.如果创建⼯作⽆法完成.例如资源不⾜⽆法分配,卡这⼀步的状态就是创建态. 就绪态:进程已经准备好,就差等待CPU分配时间⽚的状态 在进程创建完成且已经分配好所需资源后,就会等待分配CPU的时间⽚的状态, 在上⼀个时间⽚内没有完成就被保存现场以后等待再次被CPU调⽤的的状态, 进程在运⾏时产⽣长时间的IO操作后经过等待完成IO操作等待被分配时间⽚时的状态 执⾏态:程序正在执⾏的状态.拥有CPU的使⽤权 阻塞态:正在执⾏的进程由于某些原因产⽣IO请求⽽暂时⽆法运⾏时,进程就收到阻塞的状态.这中状态在满⾜请求后就会进⼊就绪态. 终⽌态:进程结束或出现错误,或者被系统终⽌的状态进程切换路径6种: 创建 to 就绪 就绪 to 执⾏ 执⾏ to 就绪 执⾏ to 阻塞 阻塞 to 就绪 执⾏ to 结束进程更多的状态介绍: 运⾏态:running 就绪态:reading 睡眠态:分为可中断睡眠(interruptable)和不可中断睡眠(uninterruptable) 停⽌态:stiopped,暂停于内存,但不会被再次被调度运⾏,只能⼿⼯启动 僵⼫态:zombie,结束了⼦进程,但是⽗进程没有收⼫,此时⼦进程的状态就是僵⼫态进程间通讯IPCInter process communication 同⼀主机: 管道 套接字 共享内存 信号 ⽂件映射,将⼀个⽂件中的⼀段数据映射到物理内存中. 锁 信号量 不同主机: SOCKET RPC,remote procedure call MQ 消息队列进程的优先级 系统优先级: LIUNX内核将系统优先级划分两部分:实时优先级和⾮实时优先级 实时优先级,0~99 ⾮实时优先级,100~139 实时优先级是给内核使⽤的, ⾮实时优先级是给普通进程使⽤的 优先级中数字越⼩数字优先级越⾼ NICE优先级: NICE优先级知识给普通进程使⽤的 范围是-20~19 NICE的-20对应的系统优先级是100 NICE的0对应的系统⾼优先级是120 NICE的19对应的系统优先级是139 TOP命令中优先级 范围是0~39 TOP中的0对应系统的优先级是100 TOP中的39对应的系统优先级是139 普通⽤户只能调⼤优先级的数字,意思就是普通⽤户不能提⾼进程的优先级 只有管理员才可以提⾼进程的优先级.时间复杂度O(1)理解: O(1)表⽰,随着计算量的增加他的时间复杂度恒定为固定值. 在linux当中⼀共有两组队列,⼀组是运⾏队列,⼀组是就绪队列.每⼀组队列当中⼜由140个⼦队列,每个⼦队列就代表着⼀个优先级,表⽰0~139个优先级.根据进程的优先级就会分布在这140个⼦队列中. 系统会⾸先判断140个队列的优先级,把0号队列的优先级上的进程从前到后先取出⼀个开始运⾏,当运⾏完这个进程后,就会把该进程放进就绪队列当中,然后再从运⾏队列中去下⼀个进程,运⾏完在放⼊到就绪队列.当0号运⾏队列中已经没有了就绪态的进程就会把,就绪队列变成运⾏队列.⽽空的原运⾏队列就变成就绪队列.如此往复,实现了系统检索优先级的时候只是在这280个对联中查找.所以时间复杂度是恒定的.时间复杂度O(n)理解: 这⾥⽤使⽤contains()⽅法使⽤查找List集合⾥⾯的某个元素来举例。
进程的概念和进程的描述8.1 进程的概念8.1.1 程序的并发执行1.程序的顺序执行程序是在时间上按严格次序前后相继的操作序列,是一个静态的概念。
计算机 CPU是通过时序脉冲来控制顺序执行指令的。
一个具有独立功能的程序独占处理机直至最终结束的过程称为程序的顺序执行。
并具有如下特点:(1) 顺序性(2) 封闭性(3) 可再现性2. 多道程序系统中程序的执行多道程序系统计算机能够同时处理多个具有独立功能的程序。
这样的执行环境具有下述三个特点:(1) 独立性每道程序都是逻辑上独立的,它们之间不存在逻辑上的制约关系。
(2) 随机性(3) 资源共享3. 程序的并发执行(1) 程序的并发执行并发执行,是为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术。
多道程序系统的程序执行环境变化所引起的多道程序的并发执行在某道程序的几个程序段中,包含着一部分可以同时执行或顺序颠倒执行的代码。
例如语句:read (a) ;read (b) ;它们既可以同时执行,也可颠倒次序执行。
程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。
程序的并发执行不同于程序的并行执行。
程序的并行执行是指一组程序按独立的、异步的速度执行。
并行执行不等于时间上的重叠。
程序的并发执行使得其执行结果不再具有封闭性和可再现性,且可能造成程序出现错误。
8.1.2 进程的定义进程的概念是60年代初期,首先在MIT 的 Multics系统和IBM 的 TSS/360系统中引用的。
(1) 进程是可以并行执行的计算部分(S.E.Madnick,J.T.Donovan);(2) 进程是一个独立的可以调度的活动(E.Cohen,D.Jofferson);(3) 进程是一抽象实体,当它执行某个任务时,将要分配和释放各种资源(P.Denning);进程和程序的区别和关系(1) 进程是一个动态概念,而程序则是一个静态概念。
进程基本知识进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。
进程简述windows的进程管理器对应用程序来说,进程就像一个大容器。
在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。
1.进程的引入:多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。
这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。
为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念。
2.进程的概念:进程的定义进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动(简单说是程序在并发环境中的执行过程。
)。
它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
主要两点进程的概念主要有两点:第一,进程是一个实体。
每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二,进程是一个“执行中的程序”。
程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
一、进程定义1.进程是具有某一个功能的程序在某一个数据集合上的执行过程,是资源调度分派的独立单位。
调度:是从就绪队列中选择一个进程,不同的调度算法选择的结果不一样•分派:把CPU的使用权交给选择出来的进程•2.进程也是执行中的程序,它包括进程堆栈段(临时数据)、数据段(全局变量)、程序计数器3.进程的两个基本特性:动态性(进程实质是程序的一次运行活动,有生命过程)、并发性(系统中可同时存在多个进程,各自互相独立的向前推进)4.知道程序与进程的区别程序是完成所要求的功能时所应采取的顺序步骤,是执行指令的有序集合。
•进程是程序的一次运行活动,是一个动态概念•区别:程序是一个静止的概念,作为一种资源可以永久存放在磁盘上。
进程是程序执行的动态活动过程,随程序执行而诞生,随程序执行结束而消亡。
a.静止状态的程序和数据是相互独立的信息集合。
进程中的程序和数据是一个不可分割的实体。
b.一个程序可以对应多个进程c.•5.进程的组成部分:程序、数据、PCB(进程控制块)PCB进程控制块包含管理特定进程的有关信息:进程状态、程序计数器、CPU寄存器、CPU调度信息、内存管理信息、记账信息、IO状态信息•什么是PCB——PCB是操作系统内核中的数据结构,包含管理特定进程所需的信息(如上)•二、进程状态(新、就、运、等、停)(记法:ready三个入度一个出度,running三个出度,上被下主)CPU调度决策发生在以下四个黄色进程切换状态状态转换的说明新-就绪(抢占):新进程被允许后进入就绪队列•就绪-运行(抢占):当处理机空闲时,系统按照一定调度算法从就绪状态中选择一个使其占用处理机运行。
•运行-就绪(非抢占):分配给进程的时间片用完时,或出现一个更紧急的进程时•运行-等待(非抢占):运行的进程需要等待某一事件发生后,才能继续往下运行•等待-就绪(非抢占):处于等待的进程,如果其等待的事件已经发生,表示阻塞的原因已解除,则该进程从等待转为就绪•注意点:(被)抢占非抢占抢占(别人)非抢占第二章.1节进程基本概念2018年7月7日11:171.等待进程在等待原因解除后,虽然再次具备了运行条件,但不能直接运行,而要先转换成就绪,等待调度2.从运行态到就绪态的转换是被动的3.从运行态到等待的转换是主动的4.从等待到就绪的状态转换是由外部事件引起的三、调度——从就绪队列中选择一个进程,不同的调度算法选择的结果不一样1.三种调度(长期调度、短期调度、中期调度)•长期调度——作业调度,决定多道程序的度choose a job among several ones ready to be brought into memory(into ready queue)•短期调度——CPU调度,choose a job among several ones ready to run(into cpu)•中期调度medium-term scheduling将进程从内存或者CPU中移出,降低多道程序的度,作用机制:改善进程组合、释放内存四、上下文切换(context switch)1.任务——保存CPU当前的运行状态(旧进程状态存在PCB中)并加载新进程的保存状态2.上下文切换是系统的额外开销,切换时系统不能做其他工作五、创建进程1.父进程与子进程父进程可以与子进程并发执行,也可以等待子进程执行完毕,父进程再继续执行2.fork()创建一个新进程并拷贝父进程的程序和指令,exec()把子进程的内容更新成想要的3.父进程的返回值=子进程的标号(非0),子进程的返回值=0,作用是防止进程的无限创建六、生产者消费者问题——协作进程的通用范例Bounded buffer(有限缓冲)问题1.初始化一个有限缓冲空间,in=0,out=0;2.当in==out,缓冲区空当(in+1)%buffersize==out,缓冲区满。
进程的概念和特征从不同的⾓度,进程可以有不同的定义,⽐较典型的定义有:进程是程序的⼀次执⾏过程。
进程是⼀个程序及其数据在处理机上顺序执⾏时所发⽣的活动。
进程是具有独⽴功能的程序在⼀个数据集合上运⾏的过程,它是系统进⾏资源分配和调度的⼀个独⽴单位。
在引⼊进程实体的概念后,我们可以把传统操作系统中的进程定义为:”进程是进程实体的运⾏过程,是系统进⾏资源分配和调度的⼀个独⽴单位。
“为了使参与并发执⾏的程序(含数据)能独⽴地运⾏,必须为之配置⼀个专门的数据结构,称为进程控制块(Process Control Block, PCB)。
系统利⽤PCB来描述进程的基本情况和运⾏状态,进⽽控制和管理进程。
相应地,由程序段、相关数据段和PCB三部分构成了进程映像(进程实体)。
所谓创建进程,实质上是创建进程映像中的PCB;⽽撤销进程,实质上是撤销进程的PCB。
值得注意的是,进程映像是静态的,进程则是动态的。
进程是由多程序的并发执⾏⽽引出的,它和程序是两个截然不同的概念。
有着⾃⾝的特征:1. 动态性:进程是程序的⼀次执⾏,它有着创建、活动、暂停、终⽌等过程,具有⼀定的⽣命周期,是动态地产⽣、变化和消亡的。
动态性是进程最基本的特征。
2. 并发性:指多个进程实体,同存于内存中,能在⼀段时间内同时运⾏,并发性是进程的重要特征,同时也是操作系统的重要特征。
引⼊进程的⽬的就是为了使程序能与其他进程的程序并发执⾏,以提⾼资源利⽤率。
3. 独⽴性:指进程实体是⼀个能独⽴运⾏、独⽴获得资源和独⽴接受调度的基本单位。
凡未建⽴PCB的程序都不能作为⼀个独⽴的单位参与运⾏。
4. 异步性:由于进程的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进。
异步性会导致执⾏结果的不可再现性,为此,在操作系统中必须配置相应的进程同步机制。
5. 结构性:每个进程都配置⼀个PCB对其进⾏描述。
从结构上看,进程实体是由程序段、数据段和进程控制段三部分组成的。
计算机二级进程知识点总结一、进程的概念1. 进程是计算机中的基本概念之一,它是指正在运行的程序的实例。
2. 操作系统通过进程来管理和调度程序的执行,每个进程拥有独立的内存空间和执行环境。
3. 进程的主要特性包括并发性、独立性、动态性和时序性。
二、进程的属性和状态1. 进程的属性包括进程标识符(PID)、优先级、状态、父子关系等。
2. 进程的状态包括运行态、就绪态和阻塞态等。
三、进程的创建和终止1. 进程的创建可以通过fork()系统调用来实现,它会创建一个与原进程相同的新进程。
2. 进程的终止可以通过exit()系统调用来实现,它会终止当前进程的执行并返回一个状态码。
四、进程的调度1. 进程的调度是操作系统的重要功能之一,它决定了哪个进程能够获得CPU的执行权。
2. 进程调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、轮转调度(RR)等。
3. 调度算法的选择取决于系统的需求和实际情况,不同的算法有不同的特点和适用范围。
五、进程的同步和通信1. 进程的同步是指协调多个进程的执行顺序和时间,避免出现竞态条件和死锁问题。
2. 进程的通信是指多个进程之间的信息交换和数据共享,可以通过信号量、消息队列、共享内存等方式实现。
六、线程的概念1. 线程是进程的一部分,它是指进程中的执行单元,可以看作是轻量级的进程。
2. 线程共享进程的地址空间和资源,多个线程之间可以实现并发执行和数据共享。
七、多线程编程1. 多线程编程是利用多个线程来完成任务,可以提高程序的并发性和性能。
2. 多线程编程需要考虑线程的创建、同步、通信和终止等问题,避免出现竞态条件和死锁。
八、进程调度算法1. 先来先服务(FCFS)算法是最简单的调度算法,按照进程到达的先后顺序进行调度。
2. 最短作业优先(SJF)算法是根据每个进程的执行时间来进行调度,执行时间最短的进程先执行。
3. 轮转调度(RR)算法是按照时间片轮转的方式进行调度,每个进程只能执行一个时间片的时间。
进程的具体概念进程是计算机科学中的一个重要概念,是指正在运行的程序的实例。
在操作系统中,进程是程序的执行实体,是操作系统对进程的抽象。
每个进程都具有独立的内存空间、程序计数器、寄存器集合和文件描述符等系统资源。
进程是操作系统资源分配和调度的基本单位。
进程的创建是通过执行程序来实现的。
当用户通过命令或操作系统调用启动一个程序时,操作系统为该程序分配所需的资源,并为其创建一个独立的进程。
进程的状态可以分为就绪状态、运行状态和阻塞状态三种。
就绪状态指进程已经准备好运行,等待调度器分配处理器资源;运行状态指进程正在执行指令并占用处理器资源;阻塞状态指进程由于等待某个事件发生而暂时停止执行。
进程之间可以通过进程间通信(IPC)机制进行相互通信和数据交换。
常见的进程间通信方式包括管道、信号量、消息队列、共享内存等。
进程间通信的目的是为了实现进程之间的协作与合作,使得多个进程可以共同完成复杂的任务。
进程间通信还可以用于进程同步与互斥,保证共享资源的访问顺序和完整性。
进程还可以创建子进程。
子进程是父进程的一个副本,它继承了父进程的所有资源,并可以重新加载一个新的程序,并执行新的指令序列。
子进程是通过调用操作系统的fork()函数创建的。
fork()函数会创建一个子进程,并使得子进程与父进程在某一点处以相同的状态继续执行。
进程的调度是操作系统决定哪个进程获得处理器资源的过程。
调度算法的目标是实现公平、高效和合理的资源分配。
常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、时间片轮转等。
不同的调度算法有不同的优缺点,选择合适的调度算法可以提高系统的性能和响应速度。
进程的终止可以是正常结束或异常结束。
正常结束是指进程执行完了所有的指令并成功释放了所占用的资源;异常结束是指进程执行过程中发生了错误或异常,导致进程终止。
无论是正常结束还是异常结束,操作系统都需要清理进程所占用的资源,并将进程的信息从进程表中删除。