操作系统
文章
5.4 IO多路复用与线程进程
IO多路复用1 单线程并发的含义IO多路复用即单线程并发,事件驱动模型。有事件响应机制、事件回调机制等。 单线程并发,并非真正意义上的单线程。而是只有单一的用户线程。还包括数据库,socket等系统多线程。 单个用户线程:对于十万个用户同时访问服务器,有两种方式处理并发。 为每个用户开一个新的用户线程,每个线程内部采用阻塞通信的方式,即同步通信,从数据库中取数据、与服务器通信等,直到得到结果,返回给用户。其中涉及多个用户线程。 只有一个用户线程,采用非阻塞通信的方式,即异步通信,通过事件驱动的方式实现并发。从数据库中取数据、与服务器通信或与其他进程通信,并不会阻塞线程的执行,每次数据获取完毕,通过事件的方式,调用用户进程,处理得到的数据,返回给用户。其中,只有一个用户进程。 对于事件驱动的方法:会存在一个事件队列,唯一的用户进程会不断地依次处理队列中的事件。所以不会存在冲突。有两种处理事件的方法:基于监听器的事件处理机制和基于回调的事件处理机制。 常见的线程通信:与服务器进行通信socket,与数据库进行通信、与文件读写进程进行通信。 前者通过扩展空间的方式,后者通过缩短时间...
5.5 IO多路复用与回调函数
IO多路复用与回调函数1 this指针this指针this关键字指向的是当前对象的引用 this 不是指向类。而是在实例化的时候与当前类的实例也就是对象,进行绑定。 关于回调对于Python与JavaScript这种,能够直接传递“函数类型”的参数,C++也是可以传递函数指针和可调用对象,java能够传递对象引用进而调用对象内部的函数。回调函数可以作为另外一个函数的参数,进行传递。 关于回调函数的本质理解:当其他程序执行时,能够通过回调函数,执行调用者的代码,访问调用者传递进来的资源。但这里并没有转移控制权,而是保留控制权在当前的被调用者。可以把调用者与被调用者分开。调用者能够显式调用被调用者,同时被调用这能通过回调函数隐式调用调用者。 同步回调与异步回调回调函数在同一个线程或进程内,是同步回调,调用者与被调用这的CPU控制权是串行的。回调函数的主要目的是业务逻辑的划分,降低调用者和被调用者,相互调用时的耦合程度。也就是说,不同的调用者,可以让被调者在某一阶段。 当回调函数与主调函数的执行不再同一个线程内,是异步回调,调用者与被调用者的CPU控制权是并行的。被调函数就可以通过回调...
6 文件系统
文件系统 目录 文件和文件系统 文件的逻辑结构 外存分配方式 目录管理 文件存储空间管理 文件共享与文件保护 数据一致性控制 1 文件为什么说Linux一切皆文件 Linux世界中的所有、任意、一切东西都可以通过文件的方式访问、管理。任何东西都挂在文件系统之上,即使它们不是文件,也以文件的形式来呈现。开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。 进程(/proc)、设备(/dev)、Socket等等,实际上都不是文件,但是你可以以文件系统的规范来访问它,修改属主和属性。 常见的问题件系统FAT、NTFS、ExtFAT、ext2、ext3、reiserFS、VFAT、APFS 定义文件系统是对一个存储设备上的数据进行组织的机制。 具有符号名,在逻辑上具有完整意义的一组相关信息项的序列 文件名是由字母、数字和其他符合组成的一个字符串,其格式和长度因系统而异 命名: 文件名和拓展名:前者用于识别文件,后者用于标识文件特性,二者用’.’隔开 不同OS有约定的拓展名,Unix不做介绍,Windows如下 COM:可执行的...
7 操作系统接口
操作系统接口 目录 联机用户接口 shell命令语言 系统调用 图形用户界面 3 系统调用定义 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 操作系统实现的完成某种特定功能的过程 为所有运行程序提供访问操作系统的接口 系统调用实现 编写系统调用处理程序 设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,并包含系统调用自带参数的个数 陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场 Linux 的系统调用主要有以下这些: Task Commands 进程控制 fork(); exit(); wait(); 进程通信 pipe(); shmget(); mmap(); 文件操作 open(); read(); write(); 设备操作 ioctl(); read(); write(); 信息维护 getpid(); alarm(); sleep(); 安全 chmod(); umask(); chown();
附录1 课后习题答案
计算机操作系统(第3版)课后习题答案 参考链接 https://blog.csdn.net/skymyxvincent/article/details/52851675 第一章1.设计现代OS的主要目标是什么? 答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性 2.OS的作用可表现在哪几个方面? OS作为用户与计算机硬件系统之间的接口 OS作为计算机系统资源的管理者 OS实现了对计算机资源的抽象 3.为什么说OS实现了对计算机资源的抽象?为什么说Linux一切皆文件? 答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。不同的资源实现相同的接口,就可以实现可扩展性。 4.试说明推动多道批处理系统形成和发展的主要动力是什么? 答:主要动力来源于四个方面的社会需求与技术发展: 不断提高计算机资源的利用率; 方便用户; 器件...
附录2 操作系统总结
基础知识 主要用来总结面试过程中的常见问题 参考文献 操作系统教程总结 计算机操作系统知识梳理 1 操作系统的资源管理技术 资源管理解决物理资源数量不足和合理分配资源这两个问题。 操作系统虚拟机为用户提供了一种简单、清晰、易用、高效的计算机模型。虚拟机的每种资源都是物力资源通过复用、虚拟和抽象而得到的产物。虚拟机提供进程运行的逻辑计算环境。从概念上来说,一个进程运行在一台虚拟机上,可以认为一个进程就是一台虚拟机,一台虚拟机就是一个进程。 复用:空分复用共享和时分复用共享。 空分复用共享(space-multiplexed sharing): 将资源从“空间”上分割成更小的单位供不同进程使用。在计算机系统中,内存和外存(磁盘)等是空分复用共享的。 时分复用共享(time-multiplexed sharing): 将资源从“时间”上分割成更小的单位供不同进程使用。在计算机系统中,处理器和磁盘机等是时分复用共享的。 虚拟:对资源进行转化、模拟或整合。 把一个物理资源转变成多个逻辑上的对应物,也可以把多个物理资源变成单个逻辑上的对应物,即创建无须共享独占资源的假象,...
附录3 互斥量、信号量、条件变量
互斥朗、信号量、条件变量 参考文献 http://blog.chinaunix.net/uid-20205875-id-4865684.html 1 信号量概念 信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。 实现——有名信号量 可以用于不同进程间或多线程间的互斥与同步 123//创建打开有名信号量sem_t *sem_open(const char *name, int oflag);sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value); 成功返回信号量指针;失败返回SEM_FAILED,设置errno name是文件路径名,但不能写成/tmp/a.sem这样的形式,因为在linux下,sem都是在/dev/shm目录下,可写成”...
附录4 寄存器
寄存器
附录5 协程
协程1 概念协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 例如: 12345678def A() :print '1'print '2'print '3'def B() :print 'x'print 'y'print 'z' 由协程运行结果可能是12x3yz。在执行A的过程中,可以随时中断,去执行B,B也可能在执行过程中中断再去执行A。但协程的特点在于是一个线程执行。 2 区别 那和多线程比,协程最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 3 其他在协程上利用多核CPU呢...
附录6 中断
中断1 中断定义广义和狭义 广义:程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。 操作系统是“中断驱动”的,中断是激活操作系统的唯一方式。 狭义:处理器之外的中断事件,与当前运行指令无关的中断事件。I/O中断、时钟中断、外部信号中断。 2 中断分类外中断 由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。 内中断 异常中断。由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。 陷入中断。在用户程序中使用系统调用。 3 中断事件中断来源 由处理器、内存储器、总线等硬件故障引起 由处理器执行机器指令引起。 除数为0,操作数溢出等算术异常:简单处理,报告用户;由用户编写中断续元程序处理 非法程序、用户态使用特权指令、地址越界、非法存取等指令异常:终止程序 终止进程指令:终止进程 虚拟地址异常:调整内存后...














