操作系统01
不懂计算机系统也能写程序,这是不争的事实。但是我们学习操作系统并非是为了去创造一个操作系统,而是为了理解操作系统之后写出更好的程序。
什么是操作系统?
操作系统本质上是运行在计算机上的程序,它是硬件和软件沟通的桥梁,其主要功能有:
- 对计算机硬件资源进行管理、分配和调度
- 为用户提供一个友好、清晰且简单的操作界面(专业的叫法是 壳 Shell)
处理器
处理器就是CPU,一个程序需要放入内存并给它分配 CPU 才能执行。
存储器
I/O设备
操作系统的4个特征
并发、共享、虚例、异步
并发
其中并发、共享是操作系统最基本的特征,没有这两个就谈不上、虚例和共享
并发:并发是指宏观上在一段时间内能同时运行多个程序。当然,这些程序宏观上是同时发生的,但微观上是交替发生的。操作系统通过引入进程和线程,使得程序能够并发运行。
并行:并行则指同一时刻能运行多个指令,指两个或多个事件在同一时刻同时发生。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。
并发、并行和CPU之间的关系
- 单核 CPU同一时刻只能执行一个程序,各个程序只能并发地执行 ;
- 多核 CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
主要有两种共享方式:
1)互斥共享
所谓互斥共享,就是说虽然这个资源是共享的,所有进程都能够使用,但是同一个资源在某一时刻只允许一个进程访问,也称为互斥访问。
举个互斥共享的例子:
如果我们同时使用 QQ 和微信视频,同一时间段内摄像头资源只能分配给其中的一个进程。
2)同时共享
同时共享与互斥共享相反,允许一个时间段内多个进程 “同时” 对系统中的某些资源进行访问。当然,所谓的 “同时” 往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问(即分时共享)
比如,qq发送文件a,微信发送文件b,都是同时同时访问硬盘的;
虚拟:
空分复用技术和时分复用技术
多个进程能在同一个 CPU 上并发执行就是因为使用了时分复用技术,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。
一些程序运行的内存大于电脑内存还能够运行就是因为使用了空分复用技术,把内存作为高速缓存使用,只保存需要频繁使用的,其他大部分放在磁盘上。
显然,如果失去了并发性,一个时间段内系统中只能运行一道程序,那也就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性
异步:
异步是指:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的, 而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
操作系统的4个核心
进程
进程就是正在运行的程序,不仅包括运行中的程序实体,还包括它所占用的系统资源,比如CPU、内存、网络等;
一个进程中可以有多个线程,它们共享进程资源;
内存管理
内存管理做的事情大概就是:
- 把使用频繁的部分程序放入内存
- 当内存满的时候,替换掉内存中的某些部分
文件系统管理
每个文件可以看做一个地址空间,每个文件都是独立于其他文件的,有关文件的构造、命名、存取等都是其设置的内容
I/O设备管理
操作系统必须高效的管理输入输出设备
什么是内核态和用户态
系统调用的过程简略版大致如下:
1)在用户态,应用程序传递系统调用参数
2)执行陷入指令,引发一个内中断,使 CPU 进入内核态
3)在内核态,执行相应的请求,内核程序处理系统调用
4)返回应用程序
本文参考来源;