![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
阿袁的小园子
这个作者很懒,什么都没留下…
展开
-
物理内存扩展
讲的比较好的博客在这。我就是补充一下,在使用32位逻辑地址的前提下,把4GB的内存扩展成64GB的内存,其实就相当于一个三级页表,第一级占两位,第二级占9位,第三级占9位,页内偏移占12位,这样可以访问4GB内存;但是最重要的是,操作系统可以通过修改CR3寄存器的值,然后同一个逻辑地址,却可以去访问不同的第一级页表,也就是访问不同的目录,这样就可以访问不同的4GB了。就相当于在三级页表的基础上加了个顶级页表CR3(虽然CR3不是页表,这样说是为了易于理解),访存的时候可以根据CR3的不同取值去访问不同原创 2020-11-30 21:04:38 · 613 阅读 · 0 评论 -
关于中断的分类和优先级(优先级由高到低排序)
1.机器校验中断:高速程序发生了设备故障,比如电源故障,主存出错等2.访馆中断:用户程序需要操作系统接入,调用操作系统服务等3.程序性中断:包括指令和数据的格式错误,程序执行中出现异常等4.外部中断:来自机器外部,包括定时器中断、外部信号中断、中断键中断等5.IO中断:由IO控制器产生,用于发送信号通知操作完成6.重启中断...原创 2020-11-11 16:00:18 · 22318 阅读 · 3 评论 -
操作系统中3种非连续分配管理方式的区别
3种非连续分配管理方式分别是页式存储管理、段式存储管理、段页式存储管理,我从逻辑地址的结构、表项结构、逻辑地址到物理地址的映射3个方面总结一下逻辑地址表项结构地址映射页页号+页内偏移页号+物理页号b物理页号×页面大小+页内偏移段段号+段内偏移段号+段长+本段在主存的始址段基址+段内偏移段页式段号+页号+页内偏移有两个地址映射机构一个是段->页:段号+页表基址+页表长度一个是页->内存地址:页号+物理页号通过段号获得相应页表的基址,然后通过页原创 2020-10-16 11:13:36 · 544 阅读 · 0 评论 -
专业课错题记录(王道的操作系统)
第1章 计算机系统概述1.1 操作系统的基本概念3和4选的都是D。先来看3,源程序是一种代码,编译器解释后会形成距有一定功能的可执行文件;我们用水杯和水来类比一下文件和文件内容,水杯就是文件,水就是文件内容,而操作系统关心的是文件的逻辑结构、物理结构和水杯之间的组织方式,而不关心水杯里的是水还是饮料。编译器则是一种建立在操作系统之上的软件,操作系统管不了它...原创 2020-09-15 12:43:32 · 2732 阅读 · 0 评论 -
专业课错题记录(学堂在线的操作系统)
三、启动、中断、异常和系统调用1.下列选项中,不可能在用户态发生的是(C)A.系统调用B.外部中断C.进程切换D.缺页解析:系统调用是提供给应用程序使用的,由用户态发出,进入内核态执行;外部中断随时可能发生;应用程序执行时可能发生缺页(缺页是一种中断,指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断);而进程切换完全由内核来控制2.中断处理和子程序调用都需要压栈以保护现场。中断处理一定会保存而子程序调用不需要保存其内容的原创 2020-06-24 22:31:30 · 6619 阅读 · 4 评论 -
关于脚本的一些杂七杂八(主要是shell脚本)
1.我在Windows下用得比较多的是.bat文件,它的运行方式有两种:1)powershell:.\ 脚本完整路径2)cmd:直接在命令行里输入脚本完整路径即可2.我在Linux下用得比较多的是.sh文件,它的运行方式好像有好几种,不过我只记得1种:./脚本名...原创 2020-04-19 23:24:45 · 101 阅读 · 0 评论 -
read+write+lseek函数解析
参考博客:https://blog.csdn.net/u012349696/article/details/500838811.当前文件偏移量(current file offset):这里简称为cfo,它通常是个非负整数,用于表明文件当前位置到文件开始处的字节数。读写操作通常开始于CFO,并且使CFO增大,增量为读写的字节数。文件被打开时,CFO会被初始化为0.2.lseek函数就是用来改变...原创 2019-11-23 23:13:00 · 650 阅读 · 0 评论 -
get_fs_bytes解析
extern inline unsigned char get_fs_bytes(const char * addr){ unsigned register char v; __asm__("movb %%fs:%1,%0":"=r"(_v):"m"(*addr)); return _v;}功能:从用户空间addr地址处取出一个字节char参数:addr用户空间中的逻辑地址返回:f...原创 2019-11-22 21:50:19 · 2061 阅读 · 0 评论 -
docker的理解和相关操作
1.docker是一种Linux容器的封装2.Linux容器并不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里的进程来说,它接触到的各种资源都是虚拟的。中的来说,容器是进程级别的...原创 2019-11-27 20:29:57 · 109 阅读 · 0 评论 -
报错解决系列(一:Linux相关)
1.Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable):参考博客出现这个问题可能是另外一个程序在运行,导致资源被锁不可用,而导致资源被锁的可能原因是上次运行安装或更新时没有正常完成,解决方法是输入以下两句(可能有时候输入第一句就行):sudo rm /var/cache/apt...原创 2019-11-14 11:33:23 · 125 阅读 · 0 评论 -
Linux命令集/汇编指令集
1.dd命令详细说明请参考此处:https://blog.51cto.com/xiaozhuang/850657今天学到一条dd指令如下:dd bs=1 if=bootsect of=Image skip=32就是1次读取1字节,1次写入1字节,输入的文件为bootsect,生成的文件为Image,并且跳过bootsect文件的首32字节...原创 2020-05-03 15:37:11 · 1107 阅读 · 0 评论 -
哈工大操作系统实验四
文章目录一、实验目的二、实验内容三、实验报告提出的两个问题四、开冲4.1一些注意事项4.2修改文件4.2.1修改/init/main.c4.2.2把给定的fprintk函数放入kernel/printk.c中五、感谢一、实验目的1.掌握Linux下的多进程编程技术2.通过对进程运行轨迹的跟踪来形象化进程的概念3.在进程运行轨迹跟踪的基础上进行相应的数据统计,从而对进程调度算法进行实际的量化...原创 2019-11-03 02:04:00 · 1982 阅读 · 0 评论 -
为了构成IDT表中的一个索引值,处理器会把中断或异常的向量号×8
我拿0号和1号中断来说一下。0号中断放在IDT表的第一项,也就是0字节处;1号中断放在IDT表的第二项,也就是8字节处;这时候我们来看一下,0×8=0,1×8=8,也就是说,向量号×8以后,我们在IDT表中找1号中断的处理程序时,就知道是在第8字节处找了,其它号中断类似。...原创 2019-10-30 20:57:23 · 152 阅读 · 0 评论 -
哈工大操作系统课程学习笔记
L8 CPU管理的直观想法视频:B站1.管理CPU最直观的方法:设置好PC就完事了2.多道程序交替执行,也就是并发,就是CPU管理的核心思想3.CPU真正工作起来的样子4.运行的程序和静态程序是不一样的,因为运行中的程序会有一个称为PCB的数据结构,这个数据结构是用来记录当前程序运行的状态信息的。我们把运行中的程序称为进程。5.进程和程序不一样的地方都会记录在进程的PCB里,下面是两...原创 2019-10-29 10:12:22 · 1046 阅读 · 0 评论 -
哈工大操作系统课程实验三
1.用open()来分析一下:1)系统调用是用eax,ebx,ecx,edx来传递参数的2)open所传递的文件名指针是由ebx传递。也就是说,进入内核后,我们通过ebx取出文件名字符串。但是,open的ebx指向的数据在用户空间,而当前要执行的是内核空间的代码,如何把用户空间中的ebx中的数据传到内核空间中?3)然后接着看open的处理,获取用户地址空间(用户数据段)中的数据靠的是fs段寄...原创 2019-10-23 11:42:24 · 2233 阅读 · 2 评论 -
实验楼环境使用
1)进入/home/shiyanlou/oslab目录中cd /home/shiyanlou/oslab2)把该目录下的压缩包hit-oslab-linux-20110823.tar.gz解压缩到/home/shiyanlou/中:tar -zxvf hit-oslab-linux-20110823.tar.gz -C /home/shiyanlou/3)然后oslab目录下的文件结构...原创 2019-09-13 16:20:10 · 1287 阅读 · 0 评论