OperatingSystem
文章平均质量分 90
zealscott
https://tech.zealscott.com
展开
-
UNIX中管道的理解与实现
今天上课老师具体讲了管道在UNIX中的作用以及实现原理,自己下来琢磨了好一阵子,基本上搞清楚了,赶紧记在小本本上。 管道是什么首先来看一个命令: cat file1 file2 | sortcat表示读取file1、file2中的数据,然后使用管道 |,将这些内容作为输入,使用sort函数作为输出,最后输出在屏幕上。管道做了什么事熟悉类UNIX系统的朋友一定经...原创 2018-03-06 20:03:50 · 4676 阅读 · 3 评论 -
UNIX File System 实现
最后的大作业是实现一个文件系统,我以UNIX的文件系统为标准,实现了简单的文件系统和API接口。 本文的所有代码已经上传我的Github。要求设计一个文件系统,最多可以容纳5000个文件,设备容量为250MB,单个文件最大容量为50MB,提供目录树功能,文件名最长为50个字符,每块大小1KB。本实验采用文件来模拟磁盘,采用dd命令创建文件,例如:dd if=/dev/zer...原创 2018-06-17 14:25:34 · 1398 阅读 · 0 评论 -
内存管理的基本思想与算法
介绍操作系统是如何来管理内存资源。 层次化存储体结构计算机的存储体系寄存器(register) 在CPU内部,非常快速,昂贵高速缓存(cache) 非常快速,昂贵,容量小,易失性主存(RAM) 中等速度,中等价格,易失性外存 容量大,速度慢,种类多,不易失操作系统的工作就是协调这些存储器的使用,管理存储器的部分程序被称为存储管理器记录存储使用状况...原创 2018-05-30 16:46:59 · 7241 阅读 · 0 评论 -
存储管理中的设计问题
光了解Page的基本原理还不够,还需要知道如何设计存储才能达到一个更好的性能。 页式存储管理工作集模型在虚拟页存储管理中,当一个进程被启动,其所有页面都还在外存。当CPU取第一条指令时,就会引发缺页中断。因此,在程序启动一开始,很容易发生缺页中断,工作一段时间后再维持稳定,如图所示:这种工作方式被称为demand paging:页面不是预先被装入内存,而是根据需要随...原创 2018-06-20 22:10:35 · 471 阅读 · 0 评论 -
MINIX3进程管理器概述
讨论MINIX3中使用的内存管理技术。 MINIX3不支持页式存储管理、提供了交换所需的相关代码。进程管理器负责处理与进程管理相关的系统调用(fork,exec和brk),分为两个功能(在一个进程中):进程管理存储管理(存储管理器)存储管理器保存着一张按照内存地址排列的空洞列表,当由于执行系统调用fork或exec需要内存时,系统将用最先匹配算法对空洞列表进行搜索...原创 2018-06-20 22:09:50 · 833 阅读 · 0 评论 -
死锁
讨论死锁产生的原因以及应对策略。 概述计算机系统中有很多独占资源,依次只能被一个进程使用(打印机等)。所有的操作系统都具有授权一个进程排他访问某一资源的能力,这个能力包括软件和硬件。很多进程需要独占的访问几个资源,而这时候,多个进程可能无限制地等待其他进程将独占资源释放,也就是等待永远不会发生的条件,这种情况叫做死锁。资源进程对设备、文件等获得独占性的访问权时有...原创 2018-05-21 10:41:46 · 229 阅读 · 0 评论 -
I/O软件原理
从软件系统的层次介绍I/O的实现过程。 I/O软件目标设备无关性程序员写出的软件无需修改便能读出软盘、硬盘以及CD-ROM等不同设备上的文件统一的命名一个文件或设备名将简单地只是一个字符串或一个整数,而完全不依赖于设备。在UNIX和MINIX 3中,所有的磁盘可以以任何方式集成到文件系统层次结构中去,用户也不必知道哪个各字对应着哪个设备。容错功...原创 2018-05-20 22:08:55 · 1714 阅读 · 0 评论 -
I/O硬件原理
从程序员的角度简单介绍I/O的硬件组成和原理。 操作系统的主要功能之一是控制所有的输入输出,必须向设备发出指令,捕获中断并进行错误处理,还要提供一个设备与系统其余部分简单的接口。I/O设备I/O设备在速度上覆盖了巨大的范围,这给数据传输的性能保持上造成了巨大压力。按交互对象分类人机交互设备:视频显示设备、键盘、鼠标、打印机与计算机或其他电子设备交互的设备:磁盘、...原创 2018-05-20 21:20:14 · 3822 阅读 · 0 评论 -
UNIX常用命令
介绍UNIX系统中常用的系统命令,在这里长期更新。文件相关ls -l:可查看当前目录所有文件信息chmod使用技巧:chmod u+r,g+x filename;chmod --reference=file1 file2;pwd:打印当前目录地址mkdir、rmdir:新建、删除目录注意,使用rmdir命令,必须先把目录中的文件和子目录删除或移走。若需要将文件夹删...原创 2018-05-20 19:33:45 · 1058 阅读 · 0 评论 -
Minix3进程概述
介绍Minix3中的系统组织结构及进程实现。 概述UNIX 的内核是一个部分模块的单块程序MINIX 是微内核结构,是一组进程的集合,内核功能较少,进程之间以及用户进程之间使用进程级通信机制(IPC)进行通信内部结构注意:内核层的 system task 是系统任务,第二第三层统称为系统进程 system process除了第一层为内核层,其他层都是user mode...原创 2018-05-04 11:48:39 · 1528 阅读 · 0 评论 -
进程调度介绍
因为有进程间通信,就会涉及到多个进程竞争CPU,操作系统要决定哪一个进程先运行。 调度介绍由于我们不知道每次作业什么时候到来,每个作业需要运行多久,因此不太可能有绝对完美的调度算法。许多进程调度的处理方式对进程和线程都适用。这里首先讨论进程调度问题。我们可以把调度算法分为两类:非抢占式调度以及抢占式调度。非抢占式调度算法这种算法挑选一个进程运行,并一直运行到阻塞(...原创 2018-04-17 19:00:43 · 1668 阅读 · 0 评论 -
经典IPC问题实现与思考
本文介绍多种同步方法来解决进程间通信问题,并给出模型的代码实现。 代码介绍本文主要侧重于代码实现,若对互斥(mutex)以及死锁问题还不够熟悉,可以参考我这篇文章。 include <pthread.h> - pthread_mutex_t - 用于创建互斥(mutex)变量 - pthread_mutex_lock ...原创 2018-04-11 22:02:54 · 1860 阅读 · 0 评论 -
竞争条件与互斥
本文主要讲解多线程(进程)编程时出现竞争条件的解决方案及代码实现。 竞争条件协同进程可能共享一些彼此都能够读写的公用存储区(例如打印机脱机系统),也可能是一些共享文件,当两个或多个进程读写某些共享数据,而最后的结果却绝育进程运行的精确时序,就称为竞争条件(race condition)。如果程序之间有竞争条件,也许大部分的运行结果都很好,但在极少数情况下会发生一些难以解释的事情。...原创 2018-04-03 22:30:05 · 1215 阅读 · 0 评论 -
进程模型与实现
进程进程就是正在执行的程序。包括程序计数器(PC),寄存器,变量的当前值等。从数据结构上来说,包括代码段(Text),数据段(Data,存储静态变量和全局变量)和堆栈段。 在逻辑上,每个进程都运行在自己的虚拟CPU上,因为我们在编写代码时,并没有考虑进程间的切换,而就认为我们的代码会连续执行,这是计算机中一种重要的抽象。 而在实际物理上,多个进程是通过切换共享物理CPU(为了简单,这里只考...原创 2018-03-20 21:37:55 · 584 阅读 · 0 评论 -
UNIX管道应用及Shell实现(一)-主体框架
操作系统的第一个大作业是做一个简单的Shell,实现重定向、管道等功能。奋战了好几天终于基本搞定了= = 基本要求Shell能够解析的命令行法如下:带参数的程序运行功能。 program arg1 arg2 … argN 重定向功能,将文件作为程序的输入/输出。 a)“>”表示覆盖写 program arg1 arg2 … argN >...原创 2018-03-25 11:14:20 · 1814 阅读 · 0 评论 -
UNIX管道应用及Shell实现(二)-命令解析
接上一篇,本篇主要介绍字符串处理和命令的解析。 命令解析完成一个命令的解析,最重要的步骤就是字符串的解析。我们如何对拿到的字符串进行分解呢?笔者的思路如下: 1. 使用fgets()等函数将输入的命令存放在缓存区中。 2. 对其用空格对其进行分割(使用[strtok()][2]等字符串处理函数),解析出特殊命令符(重定向”>”,管道”|”,后台程序”&”等) 3...原创 2018-03-25 11:14:10 · 730 阅读 · 0 评论 -
Minix安装及配置指南
这学期的操作系统课我们使用Minix3.3进行教学。折腾了一上午,在此记录下自己安装和配置Minix的过程。 系统介绍Minix是一种基于微内核架构的类UNIX系统,与最受欢迎的Linux系统的最大区别就是:Linux是巨内核,Minix是微内核。Minix是由Andrew S. Tanenbaum大神发明的,其最初设想就是为了教学。由于Minix内核代码只有几千行,因此我们这学期也用...原创 2018-03-02 16:41:46 · 10540 阅读 · 0 评论 -
UNIX管道应用及Shell实现(三)-多管道实现
本篇主要介绍多管道实现,自己也写得不好,希望大家多多指点。 思路我在这篇文章中较详细的讲解了管道的实现,但当时只涉及到一个管道,因此只需要关心对管道的read和write,并不需要关心read到什么地方去。 首先,我们在使用pipe创建管道后,需要fork一个进程,子进程用于向管道写,父进程用于向管道读(注意,顺序不能颠倒)。很有趣的一个问题是,当我们使用fork命令时,子父进程...原创 2018-03-25 11:14:25 · 3184 阅读 · 0 评论 -
文件系统
介绍文件系统的实现与原理。 文件系统的基本概念文件系统的基本要求必须能够存储大量的信息。在使用信息的进程终止时,信息必须保存下来。多个进程可以并发地存取信息。文件文件命名文件是一个抽象机制,它提供了一种把信息保存在磁盘上而且便于以后读取的方法。它必须这样来实现,使用户不必了解信息存储的方法、位置以及磁盘实际运作方式等细节。文件结构文...原创 2018-06-25 10:24:54 · 396 阅读 · 0 评论