更新链接:
https://mp.weixin.qq.com/s/hucEkWUpL3xC6xU7U5o74Q
47.磁盘调度算法——LOOK算法
请看:磁盘调度算法——LOOK算法45.磁盘调度算法——电梯算法
请看:磁盘调度算法——电梯算法45.文字编码
请看:文字编码44.字节序与大小端
请看:字节序与大小端43. 浮点数
请看:浮点数42. 我该使用哪些I/O函数?
请看:我该使用哪些I/O函数?(译)41. 什么是抽象?
请看:什么是抽象?40. 局部性
请看:局部性(译)39. DRAM和SRAM存储器特性比较
DRAM(Dynamic RAM)和SRAM(Static RAM)存储器特性比较如下表所示。
每位晶 体管数 | 相对访问时间 | 持续 否 | 敏感 否 | 相对 花费 | 应用 | |
SRAM | 6 | 1× | 是 | 否 | 1000× | 高速缓存存储器 |
DRAM | 1 | 10× | 否 | 是 | 1× | 主存、帧 缓冲区 |
38. 操作系统管理硬件
请看:操作系统管理硬件
37. 高速缓存的重要性
请看:高速缓存的重要性
36. 原语的概念
请看:Primitive--原语
35. 哲学家进餐问题
请看:哲学家进餐问题
34. 理发师问题
请看:理发师问题
33. Linux标准文件
请看:Linux标准文件
32. 处理机与处理器
请看:处理机与处理器
31. 自由软件许可证
自由软件许可证介绍请看:
软件许可证
30. 什么是计算思维
请看:计算思维
29. 什么是计算机系统能力?
请看:计算机系统能力
28. 进程、线程和协程概念。
进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
线程:线程是指进程内的一个执行单元,也是进程内的可调度实体。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。从技术的角度来说,“协程就是你可以暂停执行的函数”。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
详细内容请看: 进程、线程与协程
27. 我们为什么在文本界面环境下做实验呢?
在图形界面中使用计算机太方便太简单了,我们不需要思考即可进行操作,使得很多人不明白什么是当前目录,什么是相对路径、绝对路径。一个文件存储的位置如何表示都不知道。因此,我们强调必须在文本界面下进行实验,观察、体会操作系统是如何工作的,你输入的每条命令系统是如何是处理的,表现的结果是什么,......多思考,慢慢地你就会学到很多知识。
26. 用软件解决进程互斥方法的演变
人们提出很多种解决进程互斥的方法,有用软件解决的方案,也有用硬件的解决方案。
关于用软件的方法实现进程之间的互斥请看:用软件解决进程互斥方法的演变
25. 读者与写者问题
读者与写者问题(The readers-writers problem)是指多个进程对一个共享资源进行读写操作的问题。在两组并发执行的进程中,一组进程只要求读数据文件内容,称为读者;另一组进程要求修改数据文件内容,称为写者。 同步算法描述,请看:读者与写者问题24. 下棋问题
有n个(n为偶数)椅子供人下棋,一盘围棋由两个人来下,下棋者来时需要看一看有没有空椅子。一个服务员,当有两个人到来且都申请到空椅子时,才允许两个人下棋。一个裁判员,当两个下棋者下完棋后,为两个人裁定胜负。两个人下完棋后,交还椅子离去。使用PV操作实现上述过程。 同步算法描述,请看:答疑(进程同步、互斥、死锁)之一23. 多个理发师问题
有m个理发师,n个理发椅和k把等候理发的顾客坐的椅子。如果没有顾客,理发师在休息室;当一个顾客到来时,必须唤醒理发师,进行理发;如果理发师正在理发,又有顾客来到,则如果有空椅子可坐,他就坐下来等,如果没有空椅子,他就离开。为理发师和顾客各编写一段程序描述他们的行为。
同步算法描述,请看:答疑(进程同步、互斥、死锁)之二
22. 并发与并行(Concurrency and Parallelism)
术语“并发”是一个通用的概念,指一个同时具有多个活动的系统,而术语“并行”指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上发挥作用,我们按照系统层次结构从高到低三个层次顺序介绍。
详细内容请看:并发与并行(译)
20-21. 请看: 操作系统中的几个概念
20: 1. CPU burst 和IO burst
21: 2. CPU-bound和I/O bound
22: 3. CPU Scheduler和CPU Dispatcher
15-19. 请看: 操作系统问答
15. 问:操作系统与计算机硬件之间是什么关系?
16. 问:如果一台计算机没有安装操作系统,那么,用户在与该台计算机交互时会有哪些不便?
17. 问:作业和进程有什么区别?
18. 问:多道程序设计的优点是什么?
19. 问:什么是进程调度程序?一个好的进程调度程序有哪些特征?
5-14. 请看: 软件开发人员需要记住的10个操作系统概念(译)
5:1.进程和进程管理
6:2.线程和并发
7:3.调度
8:4.内存管理
9:5. 进程间通信
10:6. I/O管理
11:7.虚拟化
12:8.分布式文件系统
13:9.分布式共享内存
14:10.云计算
4. Android操作系统
Android是基于Linux内核的系统。Android和Linux系统的核心系统服务都依赖于Linux内核,如安全、内核管理、进程管理、网络堆栈、驱动模型等。Linux内核也作为两者的硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层应用开发提供统一的服务。
下面两个图很直观的展示了Android系统和Linux发行版系统(Ubuntu/Fedora/centos)之间的区别和联系。3. 作业管理与进程调度
作业管理:内存的空间是有限的,意味着一次性载入到内存的程序数量也是有限的,那么怎样从备选作业里选择合适的作业加载进内存就是一个问题,作业管理就负责解决这个问题。如今,由于内存容量的不断增大,很少出现有作业需要在后台排队的现象。因此,作业管理的作用逐渐失去往日的重要角色。
内存管理:选择了作业,就需要为作业分配空间,空闲区的哪一部分空间划分给作业就是内存管理需要解决的事情。
进程调度:进程,就是进行中的程序,一般我们把加载进内存的作业称为进程,以和未加载的作业区分。进程调度,就是当需要进行进程切换时,通过某种算法从进程的就绪队列中取出合适的进程,获得CPU 的执行。