进程模型
进程:正在运行的应用程序 (同一时刻一个cpu只能执行一条指令)
顺序进程—简称进程
多道程序设计–各个程序之间快速切换可以实现我们现在认为的同时运行(或者多核cpu)
/**********/
程序和进程
静态- 程序
动态-进程 进程包括程序、数据、参数、状态
进程创建
(问题:所有进程的创建是不是都需要系统调用,都是产生一个中断,系统初始化的是不是不产生中断,就是刚刚开机的时候)
进程创建的四大原因
1.系统的初始化(系统自动开始进行系统调用)
2.正在运行的进程执行了创建进程的系统调用(就是一个进程打开了他的子进程)
3.用户请求打开新的进程
4.批处理作业的初始化(批处理由用户发起)
总结:进程的创建的起点不是操作系统本身,就是用户。
但是都要通过系统调用来实现,都要中断当前进程,等候是由已经存在的进程执行了进程创建的系统调用而创建的。(不对!等候的中断,有可能是io等候等原因引起)
最后总结成两类:
系统自身调用下一进程
用户提出请求创建进程
进程终止
分为两类
自愿:正常退出 、出错退出
非自愿:严重错误、被其他进程杀死(如果说cpu里面只有一条进程,怎么杀死,肯定这个先挂起,第二个执行,将其杀死,或者多核cpu运行的进程被其他进程杀死,但是前一种情况不是自愿挂起的吗??,被杀死的进程什么状态?)
——整个调用都是以系统调用的过程,用户发起请求,那么处理机就会先把原来进程挂起,再执行另一个进程把他杀死)
进程的层次结构
进程只能有一个父进程,父进程会向下建立多个子进程,子进程再向下,最后形成进程树,形成进程组。
(进程组的动作一部分由用户发出的信号决定,用户信号,先通知系统,系统再决定进程组的动作)
进程的状态
进程之间的数据交换,有时候,一个进程的输入,是上一个进程的输出。–进程之间的通讯?
阻塞的两种状态(当时的初步理解)
阻塞–在逻辑上不能继续运行(这种情况怎么会经常出现呢?程序被创造出来,不是为了制造死机的。。。)
另一种-在逻辑上可以运行,但是被迫停止,此时操作系统调用另一个进程占用处理机。(IO中断等。。)
进程的三种状态
1.运行态——占用处理机
2.就绪态—可运行,因为其他程序正在运行,暂时被挂起
3.阻塞态—除非发生外部事件,否则不能运行(不在处理机中,不可以运行—线程要是在运行中转换为阻塞态怎么办)
,处理机会将阻塞态的进程调离出处理机,再掉一个新进程进来,假如不掉出怎么办?调出后,不再