一,计算机的基本组成原理
一,冯*诺伊曼体系:
计算机组成由:运算器,控制器,存储器,输入设备,输出设备
①运算器和控制器(CPU)
②存储器(内存)
③I/O(磁盘,网卡,显卡,显示器,鼠标,键盘)
片内总线
通信总线
系统总线:
1,数据总线
2,地址总线 32根 2^32=4G
3,控制总线
ALU:处理器的处理能力,一次能够计算的数据位数
寻址能力;处理器能够访问的内存的大小———地址总线
二,进程管理—进程是执行中的程序(存储在磁盘上的二进制可执行文件)
进程有两个部分:描述进程信息的结构或者进行进程管理和控制
————————进程的实体部分—>有序指令,数据
系统管理进程(可执行程序代码+各种资源处理器状态等等)是通过PCB(进程描述符)来记录这些数据,从而来管理给进程
1,执行程序时,要生成一个进程,是先申请PCB,还是先加载程序部分?
先PCB。在加载进程实体
2,一个进程结束时,是先释放实体部分,还是先释放PCB结构?
先释放进程实体,再释放PCB
僵死(僵尸)进程:进程实体与其PCB释放有一个时间差(PCB的释放是需要一定条件),进程实体先被释放,但PCB没有释放。
三,进程的状态:(时间片轮转法)
1,逻辑上的状态:
就绪状态:所有资源已经准备完毕,只等着CPU空闲调度执行
执行状态:CPU正在执行进程中的指令
阻塞状态:等待某些事件的发生
2,内核的状态
四,并发与并行
并发:不管任何时候都只有一个进程在进行
并行依赖于硬件的支持
五,进程加载程序到进程的加载过程:简单分页(将内存划分为大小相等的固定的区块,一般为4K)
操作系统为每一位进程维护了一个页表:(页表中记录程序的所有页号加载到内存上)
逻辑地址:在程序中的一个相对地址
物理地址:在物理内存上的绝对地址
逻辑地址不变,但物理地址会改变
六,交换分区:
在磁盘开辟的一块空间,是对内存的一个补充。
一个进程执行时,并不需要进程的所有页都时时刻刻在内存上,程序当前不需要页就会被保存在交换分区上。
1,在内存上驻留更多的进程
2,可执行比内存大的进程
操作系统的发展:
1,串行处理
2,批处理
3,多道程序设计
4,分时系统 ,实时系统
七,输出缓冲区问题
int main()
{
printf("hello");
sleep(5);
printf("wrold\n");//先睡眠5秒,打印出helloworld
exit(0);
}
printf将内容写入到输出缓冲区中,缓冲区刷新到界面上需要一定条件:
1,遇到/n斜体样式
2,主动刷新缓冲区 fflush(stdout);
3,进程结束 exit 而 _exit(不会刷新缓冲区中的数据而直接结束进程)
4,缓冲区满
主函数的参数 int main(int argc,char argv[],charenvp[]);
argc:传递给主函数的参数个数
argv:传递给主函数的参数列表,字符指针数组,给主函数传递的参数
envp:传递的环境变量列表
总结:
执行一个程序,至少传递给main函数一个参数–执行程序的命令