程序:编译好的二进制文件,在磁盘上,不占用系统资源(CPU,内存,打开的文件,设备,锁...)
进程:与操作系统联系紧密,进程是活跃的程序,占用系统资源,在内存中执行(程序运行起来,产生一个进程)
2.并发
3.并行
4.单道程序 多道程序
5.CPU 和 MMU
32位与64位主要针对的是寄存器 32位: 4字节 64位: 8字节
寄存器 速度快 容量小
硬盘 速度慢 容量大
6.硬盘到cpu
硬盘 -> 内存 -> 寄存器 -> cpu(cpu 中存储的其实是一条一条的指令( 二进制)(预处理 -> 编译 ->汇编 ->链接 ))
预取器:从内存中把指令取出来
译码器:解析指令,查看需要哪些寄存器来完成现在想要实现的功能
ALU:用来运算 只会加法和左移,算法回写到寄存器
7.MMU作用
虚拟地址:可用的地址空间 实际占用的内存没有那么多
MMU:虚拟地址与物理内存的映射
设置修改内存的访问级别(MMU在映射时 也会设置访问级别 为cpu设置 Linux只使用3级(用户空间)和0级(内核空间))
进程之间是互相独立的
同一程序虽然是不同的进程但是同用同一块内核空间。
pcb是位于内核空间当中,当时两个进程的pcb内容不一样,但是位于同一块物理内存
进程控制块 pcb
每个内核中都有一个进程控制块(PCB)来维护进程相关信息,linux内核进程控制块是task_struct结构体
主要掌握:
1.进程Id:每个进程都有唯一的id,在c语言中用pid_t类型表示,是一个非负整数
2.进程的状态:就绪 运行 挂起 停止
- 进程切换时需要保存和恢复的一些cpu寄存器
4.描述虚拟地址空间的信息
5.描述终端的信息
6.当前工作目录
7.umask掩码
8.文件描述符,包含很多指向file结构体的指针