聊聊并发和并发模型

问题的来源

以前的计算机都只有一个 CPU, 并且一次只能执行一个程序。后来出现了 多任务(multitasking) 使得计算机可以同时执行多个程序,但这并不是真正的“同时”,只是把 CPU 分成多个时间片,由操作系统去调度切换。再之后出现了 多线程(multithreading) 使得在一个程序里面可以同时执行多个控制流,就像你有多个 CPU 在执行同一个程序一样。在单 CPU 的计算机中,多线程的“同时”并不是“同时”,但现代计算机一般都是多核 CPU,不同的线程可以被不同的 CPU 核心同时执行,是真正的同时。

multithreading

如果一个线程在读一块内存区域的同时,另一个线程在往里面写,那么这块区域的值是什么?或者两个线程同时写一块内存区域,它的值又是什么?假如我们没有对这些可能出现的结果进行防范,那么结果将是不可预测的。什么情况都可能发生。因此,我们需要在一些共享资源上做一些措施,例如内存、文件、数据库等。

阅读更多

操作系统漫游(四)存储器管理

计算机系统存储层次大致可以分为:

寄存器 -> 高速缓存 -> 主存储器 -> 磁盘缓存 -> 固定磁盘 -> 可移动存储介质

由于存储器还是一种稀缺资源,操作系统对存储器的管理主要是对主存储器(主存、或者通俗地称内存)的管理。

阅读更多

操作系统漫游(二)进程

程序的顺序执行和并发执行

顺序执行

一个程序,通常由多个程序段组成。当前程序段执行结束之后,才运行后一程序段,这样的执行方式称为顺序执行。例如,输入 - 计算 - 输出,就是一个顺序执行的例子。

顺序执行的程序具有三个特征:顺序性,封闭性,可再现性。

并发执行

假设有三个设备,分别要进行 输入 - 计算 - 请求IO - 计算 - 输出。当 A 设备请求IO的时候,CPU 可以为 B 设备进行计算。这样的执行方式称为并发执行。

并发执行的程序具有三个特征:间断性、失去封闭性、不可再现性。

并发带来的程序不可再现性,是我们不希望出现的,因此我们要采取并发的控制。

阅读更多

操作系统漫游(一)引论

什么是操作系统(Operating System)

操作系统是配置在计算机硬件上的第一层软件。主要作用是管理好硬件设备,以提高硬件的利用率和吞吐量。同时,操作系统为用户和应用程序提供接口,便于计算机的使用。

阅读更多

组成原理漫游

概念

  • CPU:Central Processing Unit,中央处理机(器),是计算机硬件的核心部件,主要由运算器和控制器组成。

  • PC:Program Counter,程序计数器,其功能是存放当前欲执行指令的地址,并可自动计数形成下一条指令地址。

  • IR:Instruction Register,指令寄存器,其功能是存放当前正在执行的指令。

  • CU:Control Unit,控制单元(部件),为控制器的核心部件,其功能是产生微操作命令序列。

  • ALU:Arithmetic Logic Unit,算术逻辑运算单元,为运算器的核心部件,其功能是进行算术、逻辑运算。

  • ACC:Accumulator,累加器,是运算器中既能存放运算前的操作数,又能存放运算结果的寄存器。

  • MQ:Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。

  • X:此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数。

  • MAR:Memory Address Register,存储器地址寄存器,在主存中用来存放欲访问的存储单元的地址。

  • MDR:Memory Data Register,存储器数据缓冲寄存器,在主存中用来存放从某单元读出、或要写入某存储单元的数据。

  • I/O:Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送。

  • MIPS:Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。

阅读更多