
操作系统
文章平均质量分 90
.
Super.Bear
https://github.com/Paraniod1
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
哈工大操作系统系统调用实验二
文章目录前言一、实验内容二、系统调用三、内核中断处理 INT 80四、实现 sys_iam() 和 sys_whoami()五、开始实验1.增加系统调用号2.增加系统调用数3.函数调用表修改4.系统调用函数5.修改MakeFile6.编写应用程序7.运行和测试总结前言本次实验建立在前一个实验上,但是,请将 Linux 0.11 的源代码恢复到原始状态提示:以下是本篇文章正文内容一、实验内容此次实验的基本内容是:在 Linux 0.11 上添加两个系统调用,并编写两个简单的应用程序测试..原创 2021-10-16 12:57:13 · 2945 阅读 · 4 评论 -
哈工大操作系统的引导实验一
文章目录前言一、实验内容二、bootsect显示三、bootsect.s 读入 setup.s总结前言提示:以下是本篇文章正文内容一、实验内容此次实验的基本内容是:1.阅读《Linux 内核完全注释》的第 6 章,对计算机和 Linux 0.11 的引导过程进行初步的了解;2.按照下面的要求改写 0.11 的引导程序 bootsect.s3.有兴趣同学可以做做进入保护模式前的设置程序 setup.s。改写 bootsect.s 主要完成如下功能:bootsect.s 能在屏幕..原创 2021-10-10 22:08:18 · 4171 阅读 · 12 评论 -
哈工大操作系统实验坏境搭建
链接:https://pan.baidu.com/s/1UwLn0b1Y8H5AeWwpivwFXw 提取码:f6ex原创 2021-10-09 17:13:19 · 2648 阅读 · 5 评论 -
✨✨✨【操作系统学习笔记】(哈工大)深入了解操作系统
文章目录前言一、内核启动二、进程管理三、内存管理四、IO设备管理五、存储管理六、汇编知识总结前言笔记中参考资料大部分来自哈工大操作系统课程的课件,由于自己也是小白,笔记中可能有一些错误,希望能得到各位大佬的指正。最后,还要一点关于学习操作系统中所用到的汇编知识。提示:以下是本篇文章正文内容一、内核启动引导启动程序—bootsect操作系统加载—setup内核引导程序—head初始化程序—main(1)初始化程序—main(2)二、进程管理操作系统的接口与实现初识多进程用..原创 2021-10-06 22:04:31 · 2502 阅读 · 4 评论 -
目录与文件系统
文章目录前言一、文件系统二、文件系统代码实现总结前言文件, 抽象一个磁盘块集合,这是第三层抽象,从文件到文件系统:文件系统, 抽象整个磁盘(第四层抽象)提示:以下是本篇文章正文内容一、文件系统在使用磁盘的时候,用户眼里的磁盘是一堆树结构的有组织的文件,文件系统就是实现文件到盘块的映射目录树的优点:但是有了这样的映射,怎么才能使用 /my/data/a中a文件("/" 表示根目录)?通过文件路径名找到文件 ,也就是先通过文件路径找到文件a的FCB因为需要通过比较文件名才能找..原创 2021-10-06 21:37:13 · 936 阅读 · 2 评论 -
磁盘的管理(二)
文章目录前言一、磁盘文件1.顺序存储结构2.链式存储结构3.索引存储结构二、文件读取磁盘(第三层抽象)1.2.总结前言如果让普通用户使用生磁盘(raw disk),许多人连扇区都不知道是什么?要求他们根据盘块号来访问磁盘…这是不可能的。所以,需要在盘块上引入更高一层次的抽象概念—文件提示:以下是本篇文章正文内容一、磁盘文件磁盘使用的第三层抽象——文件,文件是一个连续的字符流用户可以在字符流上随意操作,操作系统会根据映射表找到和字符流位置对应的磁盘块号,操作系统完成了从磁盘块到字符流..原创 2021-10-04 21:06:48 · 579 阅读 · 0 评论 -
磁盘的管理(一)
文章目录前言一、磁盘的介绍二、生磁盘的使用1.IO过程简介2.直接使用磁盘3.盘块号读写磁盘(第一层抽象)4.队列读写磁盘(第二层抽象)(1)FCFS磁盘调度算法(2)SSTF磁盘调度(3)SCAN磁盘调度(4)C-SCAN磁盘调度(电梯算法)总结前言磁盘既是输入设备又是输出设备。 输出设备(OutputDevice)是人与计算机交互的一种部件,用于数据的输出。 输入设备:向计算机输入数据和信息的设备。所以,使用磁盘大致上与显示器和键盘一样提示:以下是本篇文章正文内容一、磁盘的介绍..原创 2021-10-04 19:27:14 · 1346 阅读 · 0 评论 -
IO设备-显示器与键盘
文章目录前言一、文件视图二、显示器输出三、键盘输入总结前言学习了CPU管理,进程管理,内存管理,下面就开始设备管理的学习了提示:以下是本篇文章正文内容一、文件视图对于管理外设,首先我们要让外设设备工作运行使用外设:(1)向外设对应的端口地址发送 CPU 命令(2)CPU 通过端口地址发送对外设的工作要求,通常就是命令“out ax, 端口号”,其中 AX 寄存器存放的就是让外设工作的具体内容(3)外设开始工作,工作完成后产生中断 ,CPU 会在中断处理程序中处理外设的工作结果..原创 2021-10-04 15:32:25 · 839 阅读 · 0 评论 -
内存换入与换出
文章目录前言一、内存换入1.引出换入2.请求调页二、内存换出1.引入换出2.FIFO算法3.MIN算法4.LRU算法5.Clock算法三、帧frame总结前言为了保证内存在用户程序看起来是分段,而实际是分页的效果,引入了虚拟内存。对于用户来说,虚拟内存是一个完整的内存,用户可以随意使用该内存,假设为4G,对于用户来说就有4G的空间可以使用,但是真正的物理内存远小于4G。为了实现这一差别,引出了内存换入和换出提示:以下是本篇文章正文内容一、内存换入<font color=#999A..原创 2021-10-04 00:08:15 · 2242 阅读 · 0 评论 -
Linux虚拟内存
文章目录前言一、虚拟内存的引入1.基本概念2.局部性原理3.引入二、实现虚拟内存1.载入内存2. 分配虚存、 建段表3.分配内存、建立页表总结前言提示:以下是本篇文章正文内容一、虚拟内存的引入1.基本概念虚拟内存:用辅助存储器(一般指磁盘)作为内存的补充。虚拟内存允许进程执行时只将部分程序放入内存,因此程序可以比物理内存大。虚拟内存的大小受计算机寻址机制和可用辅助存储器容量大限制,而不受内存容量的限制。特征:①运行进程时只把现在要执行的页/段装入内存,其余页/段放在外存,需要时..原创 2021-10-03 12:18:23 · 2151 阅读 · 0 评论 -
内存的管理
文章目录前言一、内存分区1.固定分区2.动态分区3.分区分配算法二、内存分页1.引入分页2.多级页表3.快表TLB总结前言前面讲了内存的分段,这才是内存管理的起点。接下来,分段和分页结合使用才能真正的管理和使用内存提示:以下是本篇文章正文内容一、内存分区分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。专业术语介绍(1)内碎片与外碎片:内碎..原创 2021-10-02 23:43:51 · 840 阅读 · 0 评论 -
内存使用与分段
文章目录前言一、内存使用1.逻辑地址2.重定位3.交换二、内存分段1.引入库2.读入数据总结前言提示:提示:以下是本篇文章正文内容一、内存使用1.逻辑地址内存作为计算机的基本组成部分,用来存储程序(指令和数据),内存单元按字节编址、寻址,程序装入到内存后,PC 指向程序开始地址,依次取指执行即内存使用:将程序放到内存中,PC指向开始地址这是main()编译后,entry是入口地址,如果_main相对于_entry的偏移地址是40现在如果这段程序要运行,那么只要将PC指向 ca..原创 2021-09-28 21:56:44 · 1020 阅读 · 0 评论 -
进程死锁以及处理
文章目录前言一、死锁的定义1.死锁的引出2.死锁产生原因二、死锁策略1.死锁预防2.死锁避免3.银行家算法4.死锁检测与恢复5.死锁忽略总结前言提示:以下是本篇文章正文内容一、死锁的定义1.死锁的引出死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)生产者 --消费者问题//用文件定义 共..原创 2021-09-28 21:08:00 · 3210 阅读 · 4 评论 -
进程同步与信号量
文章目录前言一、信号二、信号量1.引入信号量2.临界区3.信号量的操作4.信号量的类型三、死锁总结前言一般情况下,系统中运行着大量的进程,而每个进程之间并不是相互独立的,有些进程之间经常需要互相传递消息,所以就引出了信号,但是信号不能完全满足需求,又引入了信号量提示:以下是本篇文章正文内容一、信号信号的大致内容可以参考这篇文章Linux信号基本知识为了完成进程间的同步或者通信从而引出了信号,但是单靠信号是不能解决问题的,如生产者与消费者典例注:这里counter 就是一个信号..原创 2021-09-26 19:07:19 · 2541 阅读 · 0 评论 -
CPU调度策略
文章目录前言一、调度算法1.FCFS(First Come, First Served)2.SJF(Shortest Job First)3.RR(Round Robin)4.折中方案二、Schedule()1.counter(时间片)2.counter(优先级)总结前言问题引入:当线程1阻塞,线程2 3都处于就绪态,该执行哪个呢?需要有调度策略CPU调度的直观想法:1.FIFO:先进先出 (排队)2.Priority:优先级高的先执行面对复杂的场景,这两种几乎行不通的。CPU..原创 2021-09-25 22:36:23 · 2219 阅读 · 0 评论 -
内核级线程实现
文章目录前言一、中断入口二、使用步骤1.引入库2.读入数据总结前言提示:这里主要对内核线程switch_to的五段论程序进行分析。五段论:核心级线程的两套栈, 核心是内核栈核心级线程的切换过程:提示:以下是本篇文章正文内容,一、中断入口二、使用步骤1.引入库2.读入数据总结提示:这里对文章进行总结:...原创 2021-09-25 13:18:22 · 1283 阅读 · 2 评论 -
用户级线程与内核级线程
文章目录前言一、线程的定义二、用户级线程三、核心级线程总结前言提示:以下是本篇文章正文内容一、线程的定义线程是操作系统能够调度和执行的基本单位,在 Linux 中也被称之为轻量级进程(LWP:light weight process),在 Linux 系统中,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源比如 cpu、内存、文件,将线程分配到某个 cpu 上执行一个进程可以拥有多个线程,它还可以同时使用多个cpu 来执行各个线程,以达到最大程度的并行,提高工作的效率。线程..原创 2021-09-24 22:04:45 · 6453 阅读 · 0 评论 -
初识多进程
文章目录前言一、CPU工作原理CPU管理二、多进程1.引入进程2.多进程3.多进程的组织4.多进程的影响总结前言提示:以下是本篇文章正文内容一、CPU工作原理CPU工作原理很简单,就是不断的取指执行。CPU根据PC寄存器中的值到内存中取指令,PC会自动+1,当执行完本条指令后,CPU又根据PC寄存器取指执行。所以我们让CPU执行一段程序最直接的做法就是让PC的值设置为程序的起始地址,这样CPU会自动的执行这段程序直到程序结束。CPU的工作原理:取指执行(自动的取指执行)但是如果我..原创 2021-09-24 19:19:10 · 381 阅读 · 0 评论 -
操作系统的接口与实现
文章目录前言一、接口1.接口的定义2.接口分类二、系统调用的实现1.系统调用2.具体实现总结前言当操作系统运行到main程序中有这样一行代码if(!fork()){init();}这是创建一个子进程,对于windows来说就是启动桌面,对于linux来说就是打开shell。这一篇文章说说操作系统的接口以及实现,即上层应用是如何穿过接口进入操作系统的一、接口1.接口的定义一般情况下我们有三种方式来操作计算机:1.命令行:即通过命令程序,linux系统中常用此种方式2.图形按..原创 2021-09-23 11:51:21 · 6871 阅读 · 3 评论 -
初始化程序---main(2)
文章目录一、源码分析二、完整源码一、源码分析(1)库文件介绍// 宏定义__LIBRARY__为了包括在unistd.h中内嵌汇编代码#define __LIBRARY__// *.h所在头文件默认目录在include/// unistd.h是标准符号常数与类型文件,定义了各种符号常数和类型,并声明了各种函数// 若定义了_LIBRARY_,则还会包含系统调用号和内嵌汇编代码如syscall0#include <unistd.h>// 时间类型头文件,定义了tm结构和关于时原创 2021-09-21 17:41:56 · 1271 阅读 · 2 评论 -
初始化程序---main(1)
(1)小结:1.bootsect.s程序的主要功能:将setup.s和system模块加载到内存中,并且将自身移动到0x90000处,然后控制权交给setup.s程序2.setup程序:利用BIOS获取硬件参数并保存(main.c会用到的);将system移动到0x00000;描述符表寄存器设置;硬件中断设置;设置CR0进入32位保护模式,控制权交给head.s3.head.s程序:初步初始化中断描述符表项(哑中断);检查A20;测试是否有协处理器;初始化内存页目录表;跳转到main.c执行内核初始化原创 2021-09-20 22:58:14 · 1594 阅读 · 0 评论 -
内核引导程序---head
1.简介head.s 程序在被编译生成目标文件后会与内核其他程序一起被链接成 system 模块,它位于 system 模块的最开始部分。system模块将被放置在磁盘上setup模块之后的扇区,从磁盘上第6个扇区开始放置。注:这段程序处于绝对地址0x00000处。程序进入保护模式,程序采用AT&T语法格式。Linux AT&T汇编语法简介:添加链接描述作用:head.s程序:设置中断描述符表项(哑中断);检查A20;测试是否有协处理器;初始化内存页目录表;跳转到main.c执行原创 2021-09-19 22:58:28 · 717 阅读 · 2 评论 -
操作系统加载---setup
1.简介**作用:**setup.s是操作系统加载程序,它的作用是利用ROM BIOS中断读取系统数据,并将这些数据保存到0x90000开始的位置处(覆盖了原来bootsect程序所在的地方)读取到数据保存的位置:Linux 0.11硬盘设备号...原创 2021-09-18 23:05:47 · 1639 阅读 · 0 评论 -
引导启动程序---bootsect
1.简介打开电源,计算机执行的第 一句指令什么?指针IP及其指向的内容对于X86PC机而言:(1)x86 PC刚开机时CPU处于实模式(2)开机时,CS=0xFFFF; IP=0x0000(3)寻址0xFFFF0(ROM BIOS映射区)(4)检查RAM,键盘,显示器,软硬磁盘(5)将磁盘0磁道0扇区读入0x7c00处(6)设置cs=0x07c0,ip=0x0000注:实模式和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP), 和保护模式(32位汇编模式下)不一0x7c00处原创 2021-09-17 21:36:47 · 3401 阅读 · 16 评论