聊聊并发和并发模型

问题的来源

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

multithreading

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

阅读更多

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

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

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

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

阅读更多

操作系统漫游(二)进程

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

顺序执行

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

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

并发执行

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

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

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

阅读更多

操作系统漫游(一)引论

什么是操作系统(Operating System)

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


操作系统发展过程

人工和纸带

自1945年第一台计算机发明到20世纪50年代期间,还处于无操作系统时代,操作计算机主要是靠人工操作或者纸带脱机输入输出的方式。

批处理系统

后来到50年代中期出现了单道批处理系统多道批处理系统

单道批处理系统的程序是顺序执行的,缺点是在程序调度IO的时候,CPU就空闲下来了,直到程序调度完毕,才载入第二个程序,CPU才能继续工作。

多道批处理系统解决了这个问题。它将需要处理的作业按照队列(称为后备队列)放在外存上,依照一定的算法选择若干作业调入内存,使它们共享CPU和其他资源。这样,当程序A执行IO调度的时候,CPU可以处理程序B,提高了系统资源利用率和吞吐量,充分利用了CPU资源。但是平均周转时间长,也没有和用户交互的能力

分时系统

直到60年代,出现了分时系统,简单地说就是一台主机配有多台显示器和键盘,允许多个用户同时操作自己的终端,且互不干扰。分时系统引入了时间片的概念,也就是每个作业只能运行一小段时间,然后暂停,调度下一个作业,然后暂停,然后调度下一个作业……一直循环。分时系统实现了多用户以及交互性。

实时系统

后来又出现了实时系统,所谓实时,指的是及时。实时系统能响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地执行。

微机操作系统

之后又出现了微机操作系统,包括单用户单任务的MS-DOS,单用户多任务的Windows(从Windows 1.0 -Windows 10)、多用户多任务的Unix OS及其延伸Solari OS 和 Linux。

阅读更多

组成原理漫游

概念

  • 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,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×