先分清楚这几个概念。这几个概念的理解很重要
并发:同一时间段有几个程序都处于已经启动到运行完毕之间,并且这几个程序都在同一个处理机上运行,并发的两种关系是同步和互斥;
互斥:进程之间访问临界资源时相互排斥的现象;
同步:进程之间存在依赖关系,一个进程结束的输出作为另一个进程的输入。具有同步关系的一组并发进程之间发送的信息称为消息或者事件;
并行:单处理器中进程被交替执行,表现出一种并发的外部特征;在多处理器中,进程可以交替执行,还能重叠执行,实现并行处理,并行就是同事发生的多个并发事件,具有并发的含义,但并发不一定是并行,也就是说事件之间不一定要同一时刻发生;
多线程:多线程是进程中并发运行的一段代码,能够实现线程之间的切换执行;
异步:和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。线程是实现异步的一个方式,异步是让调用方法的主线程不需要同步等待另一个线程的完成,从而让主线程干其他事情。
异步和多线程:不是同等关系,异步是目的,多线程只是实现异步的一个手段,实现异步可以采用多线程技术或者交给其他进程来处理。
近来在看清华大学的操作系统公开课,做个笔记
1、操作系统是什么?
从两个角度来讲:
对用户来说,操作系统是一个控制软件,它可以管理应用程序,为应用程序提供服务,杀死应用程序等
对它内部的资源来说,操作系统是一个资源分配器,它可以对资源进行管理,包括外部设备,内存资源等
2、操作系统层次结构
它在硬件之上,应用程序之下,是一个中间层的系统软件。它为了应用软件之下,为应用软件提供服务支撑。面向对外的应用程序,即Shell(外壳),面向底层的,即Kernel(内核)。GUI也是Shell,即对外的图形接口,也有命令行Shell。这里是对外提供的一种可见服务,我们关注的是内部的操作系统的功能。我们去分析理解操作系统,更多是站在内核角度理解问题
3、操作系统管理的主要的三个资源:CPU(CPU调度,进程,线程)、内存(物理内存,虚拟内存)、磁盘(文件系统)、与硬件相关的底层(中断、IO、设备驱动)
硬件方面,由于硬盘速度跟CPU、内存相差很多,因此操作系统需要协调处理,所以操作系统需要良好的硬件管理和合理的资源分配。
4、OS Kernel特征:四个
(1)并发:同时存在多个运行的程序,需要OS的管理和调度
并发和并行区别:并发指的是一段时间内有多个程序可以运行;并行是一个时间点上有多个程序同时执行。一般并行执行都是多核CPU。如果只有一个CPU,无法并行
(2)共享:“同时”访问,但不是真正的同时,而是在一个时间点对某一资源只能一个进行访问,互斥共享
(3)虚拟:利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务,也就是把一台物理机器虚拟成多台虚拟及其
(4)异步:程序走一段停一段,走走停停,由操作系统调度,推进速度没法预知,执行时间也不可预知,即每个程序何时执行,执行顺序和完成时间是不确定的。但只要运行环境相同,OS保证程序运行的结果也要相同。同步意思是,程序必须按照顺序执行,上一个程序没有执行完返回下一个不能执行。
(5)互斥:进程间相互排斥使用临界资源。
5、分时操作系统:把执行时间切成小片,多个程序轮流占用时间片执行,时钟定期产生中断,人感觉是多个程序轮流执行。
6、中断:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。