(1)并发编程实现的基础
# 多道程序系统 原理,缺点
#允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在cpu中运行,它们共享系统中的各种硬、软件资源。当一道程序因i/o请求而暂停运行时,cpu便立即转去运行另一道程序。
# 多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
# 时间复用,空间复用
# 空间上的多路复用: 将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
# 空间上的复用最大的问题是:程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,
# 首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。
# 其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。
# 时间上的多路复用: 当一个程序在等待i/o时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%
# 操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限
# 什么是操作系统?
# 操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。
# 操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成
# posix是ieee提出的一个unix标准,(可移植的操作系统接口portable operating system interface)
# 操作系统的功能?
# 隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。
# 将应用程序对硬件资源的竞态请求变得有序化
# 操作系统的作用?
# 作用一:为应用程序提供如何使用硬件资源的抽象。例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制
# 作用二:管理硬件资源。操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他i/o接口设备的分配。