决定不定期整理一下计算机操作系统的笔记,零零散散的。。表现得凑合凑合,但是在脑子里不能凑合(¬︿̫̿¬)
-----------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------
进程就是操作系统对cpu是如何管理的
程序运行起来了就是进程。
进程控制块PCB 简单的来说就是一个结构体,每个节点就是一个结构体
在linux中pcb结构体的命名就叫Task Struct
一个进程包含了:
1.程序计数器 pc , 其他寄存器
2.栈
3.堆
4.数据段
5.代码段
注意:所有局部分配的变量都放在栈里。
一个进程可以占的最大内存理论是4G。
同一个CPU上不可能运行两个以上的进程
进程状态:
new(新建)
ready(就绪态)(还没cpu,一给cpu立马就可以运行了)
running(运行态)(拥有cpu)
1、会被操作系统中断interrupt,然后回到就绪态
2、会主动让出cpu,主动要求新的事件发生,比如io,然后会进入等待状态
waiting(等待态/阻塞态)
等待完毕后,获得需要的指令后会进入就绪状态。
terminated(结束)
一个进程不可能会从就绪态直接进入等待态。
关于自启程序
内核先启动shell(资源管理器),shell再启动自启程序
注意:在windows.上父进程和子进程没有任何关系,什么资源都不共享
僵尸进程: 他的父亲不收他的尸体。就是占着很多资源,但是完全什么都干不了了
如果出现僵尸的情况,会把这个进程交给系统的最跟部的进程 ,由操作系统直接领导的进程
linux中,叫init(初始化)
进程间的协作1、独立 2、合作 : 信息共享/模块化
对于fork的理解
需要注意的是,上面的程序当中,在父进程和子进程中,对应的value值是不一样的,但是,他们的地址值确实一样的。
至于原因,据说在后面的学习内容中会提到,先留个坑