说明
因为是学习笔记,所以只记录相关知识点
1、本书主要内容
- 编译
- 静态链接机制
- 操作系统如何装载程序、动态链接库、运行库标准库
- 操作系统机制
2、高速和低速设备
- 南桥: cpu、内存、高速图形
- 北桥:磁盘、键盘、鼠标
3、SMP和多核
CPU频率在短期内是天花板。 对称多处理器(SMP)
4、系统软件分类
- 平台型:操作系统内核、驱动、运行库、系统工具
- 用于程序开发:编译器、汇编器、链接器等
5、计算机分层
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决
- 接口(Interface)
Linux下的Glibc 库提供 POSIX
6、操作系统做什么
6.1 CPU不打盹
- 多道程序
- 分时系统
- 多任务系统(操作系统接管硬件资源)
6.2 设备驱动
驱动程序和操作系统内核一起运行在特权级别。且与操作系统间有一定的独立性,比较灵活。
7、内存不足怎么办
如何将计算机上有限的物理内存分配给多个程序使用
- 地址空间不隔离
- 内存使用效率低
- 程序运行地址不确定
解决上述增加中间层,使用虚拟地址。控制虚拟到物理地址的映射
7.1 隔离
目标: 有第一的地址空间,有自己的CPU, 好像真个程序占有整个计算机而不用关心其他程序。
使得每个进程有自己独立虚拟空间,只能访问自己的地址空间。
7.2 分段
-
分段: 把一段程序所需要的内存空间大小的虚拟空间映射到某个地址空间
解决的问题: 1 3
未解决的问题:2 -
分页:
解决分段问题。程序很多数据在一段时间内都不会被用到。可以使用更小颗粒度的内存分隔和映射,于是便有了分页。- 虚拟页
- 物理页
- 磁盘页
下边用一个图展示下:
问题1: Process1 的VP2和VP3不在内存中,程序访问的时候怎么办?
答: 当进程使用这两个页时,硬件会捕捉到这个信息,就是所谓的 页错误,然后操作系统会接管进程,将VP2和VP3从磁盘中读出来冰装入内存。
问题2: 保护
答:只有操作系统可以做到保护自己和保护进程。后续详解
问题3: 虚拟存储实现
答: MMU
CPU ----virtual Address----> MMU----Physical Address-----> Physical Memory
一般来讲MMU都集成在CPU内部。
8、线程相关
8.1 相关概念
线程状态:
- 运行
- 就绪
- 等待
调度
- 优先级调度
- 轮转法
线程类型
- IO密集型
- CPU密集型
8.2 线程安全
- 可重入
一个函数被重入,表示这个函数没有执行完成,优于外界因素或内部调用,有一次进入该函数执行 - volatile
- barrier()