冯诺依曼体系结构
世界上大部分的计算机,都遵循冯诺依曼体系结构
输入设备:键盘,话筒,摄像头,磁盘,网卡等
输出设备:显示器,音响,磁盘,显卡等
运算器,控制器:CPU
存储器:内存
为什么采用这样的体系结构?
技术角度
CPU处理数据的速度远远大于其他设备,根据木桶效应,计算机的效率就受到限制,因此,前人就设计出内存,让内存作为CPU与外设交互的中介,适配外设和CPU速度不均的问题。
成本角度
寄存器的成本远远大于内存,从成本和效率的角度出发,我们选择这样的体系
操作系统
操作系统是一款软件,其本质是对数据进行管理。
如何理解操作系统对数据的管理?
- 首先作为用户我们是没有权限对硬件进行直接的访问,而是通过操作系统提供给我的接口间接的访问硬件。
- 如果我们作为一个班的班长,我们如何才能管理好学生的信息?先描述,在组织
先通过描述人的特征,再通过链表进行组织,进行管理。
进程
进程可以粗略地理解为一个运行的程序就是一个进程。
描述进程-PCB
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
课本上称之为PCB, Linux操作系统下的PCB是: task_struct
task_ struct内容分类
-
标示符: 描述本进程的唯一标示符,用来区别其他进程。
-
状态: 任务状态,退出代码,退出信号等。
-
优先级: 相对于其他进程的优先级。
-
程序计数器: 程序中即将被执行的下一条指令的地址。
-
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
-
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
-
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
-
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等
-
其他信息
创建进程
#include <stdio.h>
#include <unistd.h>
int main()
{
while(1)
{
printf("I am a process\n");
sleep(1);
}
return 0;
}
查看进程
[zjq@ecs-29268 ~]$ ps ajx
如何找到我们需要的进程呢?
[zjq@ecs-29268 ~]$ ps ajx |head -1 && ps ajx| grep 'process'| grep -v grep
进程id(PID) 父进程id(PPID)