第十五讲 处理机调度 进程调度时机 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况: 进程从运行状态切换到等待状态 进程被终结了 可抢占系统中,中断请求被服务例程响应完成时发生调度,也分为两种情况: 进程时间片用完 有更高优先级的进程从等待切换到就绪 比较调度算法的准则 CPU使用率:CPU处于忙状态的时间百分比 吞吐量:单位时间内完成的进程数量 周转时间:进程从初始化到结束(包括等待)的总时间 等待时间:进程在就绪队列中的总时间 响应时间:从提交请求到产生响应所花费的总时间 处理…
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态不能共用一个栈?为什么系统调用时要切换到内核栈? x86的中断号哪些是硬中断.哪些是软中断或异常? x86中断描述符中的DPL是多少? DPL, CPL, RPL仍未理解? 感觉获取中断处理例程的过程略麻烦:首先根据中断向量索引IDT表获得中断门描述符,从中断门描述符中获得段选择子,根据段选择子索引…
第十七讲 同步互斥 进程并发执行 好处1:共享资源.比如:多个用户使用同一台计算机. 好处2:加速.I/O操作和CPU计算可以重叠(并行). 好处3:模块化. 将大程序分解成小程序.以编译为例,gcc会调用cpp,cc1,cc2,as,ld. 使系统易于复用和扩展.程序可划分成多个模块放在多个处理器上并行执行. 原子操作 原子操作是指一次不存在任何中断或失败的操作.要么操作成功完成,或者操作没有执行,不会出现部分执行的状态. 操作系统需要利用同步机制在并发执行的同时,保证一些操作是原子操作. 由…
第十一讲 进程和线程 进程 vs 程序 程序 = 文件 (静态的可执行文件) 进程 = 执行中的程序 = 程序 + 执行状态 进程的组成包括程序.数据和进程控制块 同一个程序的多次执行过程对应为不同进程 三状态进程模型:就绪.运行.等待 挂起(Suspend):把一个进程从内存转到外存. 线程 为什么需要引入线程?因为需要并行执行而又能共享资源的场景. 线程是进程的一部分,描述指令流执行状态.它是进程中的指令执行流的最小单元,是CPU调度的基本单位. 线程允许进程内多个执行流并行运行,并且能共享…
第二十一讲 文件系统 文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能. 组织.检索.读写访问数据 大多数计算机系统都有文件系统 Google 也是一个文件系统 文件是具有符号名,由字节序列构成的数据项集合 文件系统的基本数据单位 文件名是文件的标识符号 文件系统的功能 分配文件磁盘空间 管理文件块(位置和顺序) 管理空闲空间(位置) 分配算法 (策略) 管理文件集合 定位:文件及其内容 命名:通过名字找到文件 文件系统结构:文件组织方式 数据可靠和安全 安全:多层次保护数据安…
15.16 不确定编码格式的C字符串¶ 问题¶ 你要在C和Python直接来回转换字符串,但是C中的编码格式并不确定. 例如,可能C中的数据期望是UTF-8,但是并没有强制它必须是. 你想编写代码来以一种优雅的方式处理这些不合格数据,这样就不会让Python奔溃或者破坏进程中的字符串数据. 解决方案¶ 下面是一些C的数据和一个函数来演示这个问题: /* Some dubious string data (malformed UTF-8) */ const char *sdata = "Spicy…
第16讲 UI组件之TextView Android系统所有UI类都是建立在View和ViewGroup这两类的基础上的. 所有View的子类称为widget:所有ViewGroup的子类称为Layout. Android系统借鉴了java中的UI设计思想,包括事件响应机制和布局管理. UI组件的简单分类(自己定义的): 1. Basic Views --- 常用的View,例如TextView,EditText和Button 2. Pick Views --- 允许用户进行选择的View,例如…
OS中处理机调度模型和调度算法 调度层次 1.1. 高级调度(长程调度,作业调度) 功能:依据某种算法.把在外存队列上处于后备队列的那些作业调入内存.以作业为操做对象. 作业:比程序更为广泛的概念,不仅包括通常的程序和数据.还包括一份作业说明书,系统依据作业说明书对程序的运行进行控制. 作业步:每一个作业都要经过若干个相对独立而又相互关联的顺序加工步骤才干得到结果,我们把每一个步骤称为一个作业步. 作业流:若干个作业进入系统后被依次存放在外存上,这样便形成了输入的作业流. 作业控制块(JCB):…
1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 2 思路和方法 直接定义一个矩形,在矩形的四条边取值,程序大大简化. 3 核心代码 class Solution { public: vector<int> printMatrix(vector<vecto…
计算机操作系统处理机调度读后感: 笔者在看操作系统西安电子科技大学那本书的时候,初次感觉本科教的不会太难,所以没有认真的看,但是随后这本书讲的刷新了我的世界观.这本书居然是ring0级别的,这时不禁吐槽一下..如果没调试过程序,没接触过ring0的同学,这本书就和马原一样.全背完还不知道学了啥. 由于笔者之前做过逆向工程.而调试的大都是ring3级别的,这本书是ring0级别的.我必须要把这些知识和之前学的连接起来,以便以后接触ring0的时候能更轻松一些. 1.创建进程. 在这个模块我会从一个…