操作系统理论细节 1
分时操作系统具有以下特征: | 实时操作系统基本特征:
1.多路性 | 1.及时性
2.交互性 | 2.可靠性
3.独占性 |
4.及时性 |
执行系统调用的过程是这样的:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转化为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态
操作系统的五大管理功能:
(1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等;
(2)文件管理:又称为信息管理;
(3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理;
(4)设备管理:实质是对硬件设备的管理,其中包括对输入输出设备的分配、启动、完成和回收;
(5)进程管理:实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每个任务。
老问题了:进程与线程的区别
定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。
角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的单位。
资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
导致一个进程创建另一个进程的典型操作有四种:
1 用户登录;系统为用户创建一个进程,并插入就绪队列
2 作业调度
3 提供服务 系统为用户请求创建一个进程
4 应用请求 用户程序自己创建进程
1, spinlock 介绍
spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执行时间过长)会导致cpu busy飙高。因为pthread_spin_lock 自旋锁,在进入阻塞队列之前会先跑几个循环,然后再去尝试获取锁,直到自旋的次数超过阈值,才进入阻塞队列,此时才切换状态
2 ,使用准则
Spinlock使用准则:临界区尽量简短,控制在100行代码以内,不要有显式或者隐式的系统调用,调用的函数也尽量简短。例如,不要在临界区中调用read,write,open等会产生系统调用的函数,也不要去sleep;strcpy,memcpy等函数慎用,依赖于数据的大小。
虚存: 把辅助存储器作为对主存储器 的扩充, 向用户提供一个比实际主存大得多的的地址空间。即充分利用了辅存的地址空间
分时系统:一个系统可以同时为两个或两个以上的账户服务(现在流行的PC,服务器都是采用这种运行模式)
实时系统:能立即对指令做出反应的操作系统(一般用于单片机上,比如电梯的上下控制中,对于按键等动作要求进行实时处理)
支撑软件是支撑各种软件的开发与维护的软件,又称为软件开发环境。它主要包括环境数据库、各种接口软件和工具组。著名的软件开发环境有IBM公司的Web Sphere,微软公司的Studio.NET等。
包括一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
软件系统(Software Systems)是指由 系统软件 、 支撑软件 和 应用软件 组成的 计算机 软件系统,它是 计算机系统 中由 软件 组成的部分。
不十分准确的说,
–系统软件:操作系统,
–支撑软件:软件开发环境
首先互斥变量是相互对称的,第二没有互斥量会造成死锁。根据这两个条件就可以排除ABC。一个产品只能被一个消费者或一个生产者使用,必须要用互斥量,否则会进入两个角色会进入请求等待状态。
索引结构指一个文件的信息存放在若干不连续的物理块中,系统为每个文件建立一个专用的数据结构——索引表,并将这些块的块号存放在索引表中。有点是保留了链接结构的优点,同时解决了其缺点,即能顺序存取,又能随机存取,满足了文件动态增长,插入删除的需求,也能充分利用外存空间。缺点是索引表本身带来的系统开销。
在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。其逻辑地址由段号(段名)和段内地址所组成。所以第一次访问段名,第二次访问段内地址。
-
假如有快表,快表命中只需要访问主存一次,直接到指令的地方取指令即可;
-
假如没有快表或者快表没有命中,需要两次访问主存:
第一次访问页表或者段表,找到指令或者操作数地址,第二次取数或取指令;
- 假如页表或者段表也没有命中,就会发生内外存置换,这个时候需要访问主存三次。
虽然段表是二维的,但是逻辑地址也是一次访问的,和快表没啥区别
链接分硬链接和符号链接。
符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。
硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。
管程是管理进程间同步的机制,保证进程互斥的访问共享变量,并方便的阻塞、唤醒进程
面向块:将信息保存在块中,传输时一次传一块,块设备可以按照任意顺序进行访问,以块为单位进行操作,例如磁盘、usb智能卡等;
面向流:又称面向字符,将信息以字节流的方式输入输出数据,没有块结构,字符设备必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标、终端,,打印机等。
当进程在运行过程中由于某种原因停止运行
(1)当进程调度采用的是时间片轮转的调度算法,当时间片结束后:该进程为就绪状态,进入就绪队列;
(2)当进程是由于请求某种资源而停止运行时;分为静止阻塞和活动阻塞两种状态;
a:当进程停止运行且没有被挂起(执行Blocked原语)时,为活动阻塞状态;
b.当进程停止运行且被挂起时,为静止阻塞状态;
(3)当进程停止是由于用户或者其他原因强行结束时,为终止状态
文件物理结构即磁盘文件结构
连续文件类似于数组,顺序访问速度快,但是增删数据时要移动其他数据块,所以速度很慢;
链接文件类似于链表,随机访问速度慢,增删数据很快,不需要移动数据块,只需要改变指针指向即可;
索引文件糅合了连续文件和链接文件,但更适合大文件;
Windows使用显式链接文件