操作系统
文章平均质量分 71
丿咫尺天涯
这个作者很懒,什么都没留下…
展开
-
阅读深入理解计算机系统(三)--------------- 虚拟存储器
一、碎片现象:造成堆利用率低的主要原因是一种碎片现象。 内部碎片:已分配块比有效载荷大时发生的。 外部碎片:是当空闲存储器合计起来满足分配请求,但是没有一个单独的空闲块足够大来处理这个请求。所以,存储器采用试图维持少量的大空闲块,而不是维持大量的小空闲块。二、 垃圾收集: 垃圾收集器将存储器视为一张有向可达图,该图的节点被分成一组根节点和一原创 2014-12-19 21:35:07 · 650 阅读 · 0 评论 -
操作系统读书笔记
1. 进程的创建一旦操作系统发现了要求创建进程的事件后,便调用进程创建原语按下述步骤创建一个新进程(1) 申请空白PCB(2) 为新进程分配资源(3) 初始化进程控制块(4) 将新进程插入就绪队列2.内核级线程和用户级线程内核级线程:表示无论是用户进程中的线程还是内核进程中的线程,他们的创建、撤销和切换都是依靠内核的,主要缺点:对于用户的线程切换原创 2015-08-12 20:30:39 · 819 阅读 · 0 评论 -
OS中常用的调度算法总结
一、常见的批处理作业调度算法1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并原创 2015-08-12 10:16:06 · 456 阅读 · 0 评论 -
多线程的调度,以及进程的调度
多线程的调度:1. 调度时机:a. 当前执行的进程进入非执行的状态。b. 抢占的方式,进程运行时,非预期的被剥夺CPU的使用权,出现了更高优先级的进程。内核抢占:理想情况下,只要满足出现了优先级更高的进程,当前进程就应该立刻被抢占,但是,就像多线程需要用锁来保护临界区资源一样,内核中也存在很多这样的临界区,不大可能随时随地接收抢占。linux 2.4时的设计原创 2015-08-10 18:53:11 · 2473 阅读 · 0 评论 -
阅读深入理解计算机系统(四)--------------- 系统级I/O
一个Unix文件就是一个m个字节的序列,所有的I/O设备,如网络、磁盘和终端,都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。a. 打开文件,一个应用程序通过内核要求打开相应的文件,来宣告它要访问一个I/O设备,内核返回一个小的非负整数,叫做描述符,应用程序后续对这个文件的操作都是通过这个描述符。int open(char*filename,int flag原创 2014-12-22 16:36:18 · 531 阅读 · 0 评论 -
阅读笔记-------------程序员的自我修养
第1部 基础知识 当成熟的操作系统出现以后,硬件被抽象成了一系列概念,在UNIX中,硬件设备的访问跟访问普通的文件形式一样,在Windows系统中,图形硬件被抽象成了GDI,声音和多媒体设备被抽象成了DirectX对象,磁盘被抽象成了普通的文件系统。繁琐的硬件操作,都交给了操作系统,具体是由操作系统的硬件驱动程序来完成的。硬盘的基本存储单位是扇区,每个扇区512字节,逻辑原创 2014-10-27 14:38:50 · 644 阅读 · 0 评论 -
Windows 各种计时函数总结
本文对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows系统,也可以用于Linux系统。在Windows系统下三种,使用Windows提供的API接口timeGetTime()、GetTickCount()及QueryPerf转载 2015-03-03 15:13:46 · 733 阅读 · 0 评论 -
阅读深入理解计算机系统(一)--------------- 函数优化
1. 函数优化:a. 消除不必要的内容:不必要的函数调用、条件测试和存储器引用。b. 消除循环的低效率:利用处理器提供的指令级并行能力,同时执行多条指令。代码移动:识别要执行多次但是计算结果不会改变的计算,移出循环。c. 减少过程调用:d. 消除不必要的存储器引用:累计值存放在本地变量中。原创 2014-12-09 20:36:52 · 453 阅读 · 0 评论 -
阅读深入理解计算机系统(二)--------------- 进程控制
1. 进程控制每个进程都有一个唯一的正数进程ID,getpid()函数可以获得调用者的进程ID。a. fork()函数:创建一个新的运行子进程,新创建的子进程几乎但不完全与父进程相同,子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份拷贝,包括文本、数据和bss段、堆以及用户栈,子进程还获得父进程任何打开文件描述符相同的拷贝,这就意味着当父进程调用fork时,原创 2014-12-18 15:26:52 · 558 阅读 · 0 评论 -
字节存储排序:大端和小端的判别及转换
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。字节排序按分为大端和小端,概念如下大端(big endian):低地址存放高有效字节小端(little endian):低字节存放原创 2015-07-30 15:25:45 · 656 阅读 · 0 评论