进程(一)---- 操作系统、进程创建

进程概念:

  1. 冯诺依曼体系结构
  2. 认识操作系统
  3. 进程概念
  4. 进程状态
  5. 环境变量
  6. 程序地址空间
  7. 进度调度

冯诺依曼体系结构

现代计算机硬件体系结构
输入设备:采集获取数据 键盘
输出设备:数据输出 显示器
存储器:内存
运算器:中央处理器cpu
控制器:
在这里插入图片描述
硬件结构决定软件行为:QQ聊天
所有的硬件都是围绕着内存工作的

为什么不使用更大的硬盘作为存储器?

答:内存的存储介质是一种易失性介质;输入断电后会丢失。所有设备都是围绕内存工作,内存是中间的数据缓冲带。

char buf[1024] ----------------申请一块内存空间
scanf("%s",buf)-----------标准输入设备获取数据
printf(buf)-----------------------输出

认识操作系统

操作系统:系统内核+外部应用
(内核)功能:管理计算机上的软硬件资源
目的:让计算机更加好用
操作系统如何管理计算机上的软硬件资源:
在这里插入图片描述

库函数与系统调用接口的关系:库函数封装了系统调用的接口。
系统调用接口:操作系统向上提供的系统核心功能的接口。

进程概念

	进程:一个运行起来的程序;
	程序:一系列有序的指令集合;
	CPU分时机制:CPU以极快的速度切换调度运行所有程序,造成大家都在同时运行的假象。

在这里插入图片描述

操作系统如何实现多个程序的调度运行?
答:将这个运行中的程序描述出来,然后将这些描述组织起来进行管理。通过实现对pcb的调度管理实现对运行中程序的切换调度运行,对于操作系统而言,pcb就是进程。
进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述,实现对程序的运行调度。
这个pcb/这个描述在Linux中是一个结构体,即		struct  task_struct{....} 

描述信息:内存指针,程序计数器,上下文数据,进程标识符PID,IO信息,进程状态,记账信息。

内存指针:子进程与父进程运行的代码其实是一样的—指向同一块物理内存中的数据以及指令。

程序计数器/上下文数据:子进程被创建出来后,运行位置与父进程是完全一样的,下一步即执行的指令都是从创建子进程成功之后开始的,创建一个子进程出来,跟父进程干的事情是一样的,因为他们运行的代码和数据以及当前的运行位置都是一样的。
这个函数的返回值对于父子进程是不一样的
在父进程中返回创建的子进程的pid
在子进程中返回的是0
通常根据fork的返回值进行代码的分流,让父子进程进入不同的判断执行体完成不同的功能。
父子进程代码共享,数据独有。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

并发:轮询处理执行
并行:同时运行/执行

进程创建的初步认识

pid_t fork(void) …通过复制调用进程(父进程)创建一个新的进程(子进程)

进程的查看:ps -ef 或者ps -aux(更详细)

进程状态(5种):
1、运行态:(R)就绪/运行
2、可中断休眠态(S):当前阻塞能够被中断唤醒
3、不可中断休眠态(D):当前阻塞不能够被中断唤醒
4、停止态(T):停止运行,什么也不干
5:僵死态(Z):进程已经退出了,但资源没有完全被释放
杀死进程ps -aux / kill / kill -9强制杀死进程

僵尸进程

僵尸进程:处于僵尸状态的进程,指的是进程已经退出不再运行,但是资源没有完全释放。
僵尸进程的产生:子进程先与父进程退出,但是父进程没有关注子进程的退出状态,因此子进程成为僵尸进程。
僵尸进程的危害:资源泄露,一个用户所能创建的进程数量是有限的,并且资源没有完全回收会占据内存资源。
处理方法:进程等待。退出父进程(父进程退出,子进程保存退出原因就没有意义了因此就被释放了)。

孤儿进程

父进程先于子进程退出,则子进程成为孤儿进程,这个孤儿进程的父进程成为了1号进程,并且这个孤儿进程运行在后台。
孤儿进程不会成为僵尸进程的,因为1号进程随时关注子进程退出

守护进程(精灵进程)

守护进程是一种特殊的孤儿进程,父进程是1号进程,运行在后台+++++与终端以及登录会话脱离关系,不再受影响。
守护进程通常是一种运行在系统后台的批处理程序(默默的做一些循环往复的事情)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章