冯诺依曼体系结构: 现代计算机的硬件体系结构(规定了现代计算机应该具有哪些硬件单元)
硬件单元: 输入设备(键盘), 输出设备(显示器), 存储器(内存条), 运算器, 控制器(运算器+控制器 中央处理器cpu)
所有设备都是围绕存储器工作的, 存储器是作为中间的数据缓冲而存在的
操作系统: windows, macos, 红帽子, centos, ubuntu
组成: 内核+应用 (linux是内核 红帽子, centos, ubuntu是linux+不同的应用构成的)
定位: 计算机上搞管理的软件, 管理计算机上的软硬件资源
管理:

系统调用接口: 操作系统提供的用户访问系统内核的接口
库函数与系统调用接口的关系: 库函数实际上是对系统调用接口进行的一层封装后的接口
进程概念:
进程: 运行中的程序.

1. cpu如果同时进行./main和./child程序, 利用cpu的分时机制
cpu先进行./main程序几毫秒, 然后进行./child程序几毫秒, 交替进行, 人无法察觉.
2. 执行完./main之后, 下一次执行时, 如何知道他运行的哪个位置?
利用pcb进程控制块, 就是对程序运行时的描述. 可以在pcb中记录下上次运行到的位置.
这个程序运行的动态描述, 叫做pcb进程控制块, 在linux下是一个task_struct结构体.
通过程序运行的描述, 操作系统就可以调度哪个程序可以占用cpu去执行命令; 要运行哪个
程序, 则操作系统找到对象程序的pcb, 在pcb中取出程序运行所需的信息, 加载到cpu上,
cpu就开始运行这个程序了.
对于操作系统来说, 进程就是一个程序运行的描述, 通过这个描述, 操作系统可以进行程序的调度运行管理; 实际上对于系统来说, 进程就是pcb.
描述的信息: 内存指针, 上下文数据, 程序计数器, 进程ID---pid, IO信息, 进程优先级,进程状态.......
进程的简单操作:
创建进程: 进程就是一个pcb是一个task_struk结构体(linux中), 创建进程实际上就是创建了一个task_struct结构体.
pid_t fork(void)---创建进程的接口---通过复制调用这个接口的进程(父进程), 创建一个新的进程(子进程)
对于父进程返回子进程的pid, 对于子进程返回0
ps -ef 查看所有进程信息
ps -ef | grep fork 只查看fork有关的进程信息
ps -aux 查看所有进程信息,更加详细
退出进程: exit(0) 谁调用谁退出, 0是退出返回值
进程状态: 用于操作系统对于进程的管理(什么状态就对进程进行什么样的操作)
运行态, 就绪态, 阻塞态
linux中的进行状态:
运行态(R): 正在运行或轮转到时间片就能够运行
可中断休眠态(S): 可以被中断的休眠状态(满足唤醒条件, 或者休眠被中断则进入运行态)
不可中断休眠态(D): 不可被中断的休眠状态(满足唤醒条件才能进入运行态)
停止态(T): 程序停止运行的状态(依然会被调用, 但是什么都不做)
死亡态(X):
僵尸态(Z): 进程已经退出不再调度了, 但是这个进程的资源还没有被完全释放, 等待处理的一种状态
僵尸进程: 处于僵尸态的进程, 是一种退出了, 但是资源没有完全被释放的进程
产生: 子进程先于父进程退出, 但是父进程没有关注到子进程的退出, 因此系统不会完全释放子进程的资源, 这个子进程进入僵尸态. 子进程退出之后, 在进程pcb中保存了自己的返回值, 在父进程没有关注处理的情况下, pcb资源不会被释放
危害: 资源泄露(1.pcb所占的内存资源一直无法被回收; 2.一个用户所能创建的进程数量是有限制的)
处理: 退出父进程(不合理)
避免: 进程等待
孤儿进程: 父进程先于子进程退出, 子进程就成为孤儿进程,运行在后台, 父进程成为1号进程
精灵进程(守护进程): 特殊的孤儿进程

浙公网安备 33010602011771号