文章 44
浏览 11238
进程相关问题

进程相关问题

最近在准备夏令营的相关事宜,所以开始复习操作系统的相关知识。初时学习操作系统,觉得知识特别庞杂,不过这次复习起来却轻车熟路,当时很多不明觉厉的知识都开始清晰起来,过了一遍之后甚至觉得知识太少了。 考研、工作的面试中操作系统的知识是必问的,而在操作系统中,我觉得:进程线程的管理、存储管理、文件管理是其中最核心的部分,所以我的复习也主要集中与此。 程序执行 程序执行主要有顺序执行和并发执行两种方式: 程序顺序执行时具有:顺序性、封闭性、可再现性三个重要特征。可以用前驱图来描述程序执行的先后顺序,但需要注意的是,前驱图是个 DAG,也就是说前驱图中不能出现环,也就无法描述程序中的循环。 程序并发执行时的特性无疑不同于顺序执行,主要有:间断性、失去封闭性、不可再现性。 引入进程 在多道程序设计的环境中,需要引入进程的概念。 进程的定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位 结构 进程实体 = 进程控制块(PCB)+ 程序段 + 相关数据段 特征 动态性(最基本的特征):进程是进程实体执行的一次动态过程 并发性 独立性:进程是独立接受资源和独立接受调度的基本单....

实模式寻址与保护模式寻址

实模式寻址与保护模式寻址

实模式寻址 8086/8088处理器只能在实模式下进行寻址 实模式寻址是为了解决16位字长的机器访问20位地址的问题,而解决的方法就是采用寄存器分段的方式。 因为机器字长为16位,故此一个段的最大大小为2的16次方,也即64K,但不是说段的的大小一定为64K。 段不能起始于任意位置,段必须起始于小段的的整数倍位置,小段的大小为16字节。在1MB的内存中存在64K个小段。这64K个小段用16位二进制就可以唯一标识,而小段内的16个字节可以用4位二进制标识。16+4便构成了20位地址。 但这20位地址如何计算得出呢? 以程序段为例,CS寄存器内保存着16位的段地址(XXXXH),IP寄存器内保存着16位的偏移量(YYYYH),将CS寄存器的16地址左移4位得到(XXXX0H)与偏移量相加即可得到最终的20位物理地址。 在操作系统中,段的存储地址的分配是由操作系统完成的,每个段可以独立的占有64KB的区域,但是各段也可以发生重叠。 例:某程序的代码段需要8KB的存储区,数据段需要2KB的存储区,那么在在代码段结束后的第一个小段就可以作为数据段的起始地址,这样看来代码段的64KB与数据段的64....

Linux 简单文件系统实现

Linux 简单文件系统实现

Linux 简单文件系统实现 前言 借鉴于Linux文件系统的实现 存储设备分区 文件系统的最终目的是把大量数据有组织的放入持久性的存储设备中,比如硬盘和磁盘。这些存储设备与内存不同。它们的存储能力具有持久性,不会因为断电而消失;存储量大,但读取速度慢。 观察常见存储设备。最开始的区域是MBR,用于Linux开机启动(参考Linux开机启动)。剩余的空间可能分成数个分区(partition)。每个分区有一个相关的分区表(Partition table),记录分区的相关信息。这个分区表是储存在分区之外的。分区表说明了对应分区的起始位置和分区的大小。 我们在Windows系统常常看到C分区、D分区等。Linux系统下也可以有多个分区,但都被挂载在同一个文件系统树上。 数据被存入到某个分区中。一个典型的Linux分区包含有下面各个部分: 分区的第一个部分是启动区(Boot block),它主要是为计算机开机服务的。Linux开机启动后,会首先载入MBR,随后MBR从某个硬盘的启动区加载程序。该程序负责进一步的操作系统的加载和启动。为了方便管理,即使某个分区中没有安装操作系统,Linux....