操作系统知识点汇总

1 进程基础

1.1 进程和线程的概念

1.1.1 进程

进程是系统进行分配和调度的基本单位
进程=程序+数据+PCB
PCB:进程控制模块

1.1.2 线程

线程减少系统管理的开销,使并发更快
线程共享进程资源
创建和终止花费时间更少,线程切换开销更小

1.1.3 进程于线程的区别

1.2 状态转换

创建
就绪
运行
终止
阻塞
挂起

运用了交换技术,在内存中暂时不能运行的进程转移到外存,腾出空间让可以运行的新进程进入内存

1.2.1 进程切换过程

  1. 保护现场
  2. 更新PCB状态
  3. 移动PCB到就绪或阻塞
  4. 调度新的进程

1.3 进程调度

  • 高级调度(作业调度)
    作业进入内存
  • 中级调度(中程调度)
    挂起的进程重新进入内存
  • 低级调度(进程调度)
    在内存的进程从就绪态转为运行态

1.4 中断

系统设置响应哪些中断(Linux32类),遇到中断信号后,系统保存当前线程,通过中断入口地址跳转到中断子程序,在执行完中断后,再返回恢复现场,继续运行。

1.5 进程并发

1.5.1 生产者和消费者

某一时刻只允许一个生产者或者消费者访问缓存

1.5.2 读者和写者

读取可以同时进行,写入必须使用互斥

1.5.3 单线程的处理高并发

采用I/O复用

1.5.4 并发和并行

  • 并发宏观上看两个程序同时运行,微观上看两个程序交替运行
  • 并行是指严格意义上的同时运行

1.5.5 临界区

使用临界资源的代码,不能被中断
临界区的互斥方法:

  • 进入前屏蔽中断
  • 机器指令,原子操作,改变标志和进入临界区
  • 信号量方法:wait(), signal()

1.6 进程死锁

1.6.1 死锁必条件

  1. 互斥条件
  2. 请求与保持条件
  3. 非剥夺条件
  4. 循环等待条件

1.6.2 解决死锁的方法

  1. 预防死锁
    限制死锁的条件,但会降低系统效率
  2. 避免死锁
    预测当前资源分配是否会造成死锁
  3. 检测死锁
    实时检测,出现死锁,及时解决

1.7 进程的通信方式

  1. 管道
    无名管道:用于父子进程通信
    命名管道:允许无亲缘关系的进程通信
  2. 系统IPC
    消息队列
    信号:用于通知某个事件已经发送
    共享内存:依靠互斥锁,共用一块内存
  3. 套接字socket
    主要用于不同主机间的进程通信

2 用户态和内核态

  • 用户应用代码运行在用户态
  • 系统代码(如系统服务,设备驱动)运行在内核态

从用户态到内核态的转换叫模式切换,需要软中断,进程切换一定有模式切换

3 批处理系统和分时系统

批处理系统:一个进程长时间占用CPU
分时系统:一个进程只能在一个时间片内占用CPU

4 程序内存结构

代码段:存放程序的二进制代码
数据段:存放已经初始化的全局变量
BSS端:存放未初始化的全局变量
堆区:new/malloc分配
文件映射区:mmap分配或动态链接库
栈区:局部变量
系统内核

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值