操作系统
学习
狗狗狗乖乖
这个作者很懒,什么都没留下…
展开
-
OS 内核级线程
根据TCB的切换,实现内核栈的改变,再根据iret实现从内核栈到用户栈。用户级是并发(同时触发、交替执行),这个是并行(同时触发可以同时执行)用户级线程是两个栈,核心级线程是两套栈,用户栈和内核栈。进入内核的唯一方式是中断。原创 2023-08-24 21:53:01 · 96 阅读 · 0 评论 -
计组 指令格式
原创 2023-09-08 20:12:23 · 80 阅读 · 0 评论 -
OS 内核级线程代码实现
先把旧内容通过TR放入原TSS,通过TR找到新TSS然后把TSS内容拷入CPU内部,通过esp值变化实现栈的切换。state和counter实现阻塞和时间片的判断是否跳转进程。ip使用的copy的ip。原创 2023-08-25 16:31:55 · 67 阅读 · 0 评论 -
目录与文件系统
open,bread,文件名为普通磁盘,得到inode,计算盘块号,如果是特殊文件(显示器)就对应主次磁盘号;不停循环找到对应的var,然后13读取下一个的FCB然后再读取对应的var和13get_super读取超级块。引导块是长度固定的,超级块得到超级块的长度 i节点位图的长度 盘块位图的长度。有的指令要*p=7读取磁盘(重定位,段页结合,虚拟内存,换入换出)使用内存。多进程图像,程序就可以开始执行,CPU取指执行,多进程交替执行。如果把目录下所有的文件的FCB都存取,然后对比没必要太麻烦了。原创 2023-09-05 14:40:43 · 180 阅读 · 0 评论 -
OS 磁盘 && 从生磁盘到文件 &&文件使用磁盘
通过磁头和磁盘的电生磁,磁生电来写读通过往控制器写入扇区sect 磁头head 柱面port 等位置,通过DMA总线盗用技术,将信息读入内存或写入磁盘,重点在于传递数值,使用out指令,将几个信息拼接起来寻道(移动磁臂)时间是最长的,机械运动相邻盘块最好相邻,可以快速读出 7号在0号下面,因为在同一个磁道,不需要再寻道盘块取代扇区,每次读取的时间相同,但是读取的空间大多了根据block号算出扇区号,再根据扇区号得到C H 然后out指令输出。原创 2023-09-05 11:33:13 · 98 阅读 · 0 评论 -
OS I/O设备 -- 键盘
向设备寄存器发出指令,形成文件视图,中断处理就是连接设备的套路吧 dev/tty0里面的设备文件的设备信息放入inode上crewtable 是函数指针数组 不断分支,ttyx-> tty_write先写到缓冲区 write_q里面,再往下写,因为设备写的速度太慢了。原创 2023-09-04 11:47:41 · 71 阅读 · 0 评论 -
OS 内存换入&&换出
当通过逻辑地址得到虚拟地址,但是发现虚拟地址没有对应的页框号时,就要中断,然后从磁盘中找把这一页读进来,再把页表中的影射做好,再接着原来的程序。缺页中断进行中断处理 getfreepage 得到物理空闲页下一句从磁盘读入到申请的空间下一句就是物理页和虚拟地址构建联系。原创 2023-09-03 21:36:06 · 128 阅读 · 0 评论 -
OS 段页结合的实际内存管理
虚拟内存承接段和页,从用户角度,虚拟内存提供段,从硬件角度,虚拟内存把段打散映射到页。p是pcb跟着进程换,64M一个段,set base就是建段表。因为每个进程虚拟地址空间互不重叠,所以页表可以共用一个。from_dir是old_data。先基于段的翻译,再基于页的翻译。原创 2023-09-02 20:39:38 · 138 阅读 · 0 评论 -
OS 内存分区和分页 && 多级页表与快表
快表是寄存器,很昂贵,所以只能一部分页号,不在快表中就规规矩矩的去查。构建页目录 每个页目录号指向4M的地址。但是不连续需要的空间太多了,太麻烦了。多级页表:类比于书的章目录和节目录。每个进程的PCB都有一个LDT。内存紧缩不实用,所需时间太长。类似于段表,存在页表。原创 2023-09-02 15:40:42 · 124 阅读 · 0 评论 -
OS 内存使用和分段
磁盘很大但是内存很小,当进程一堵塞的时候,就把进程一放入磁盘,然后进程二进去。进程三睡眠的时候在把二和三交换,所以载入之后重定位不太行。GDT是整个操作系统的段表,多个进程的。LDT时某个进程的段表。原创 2023-09-01 11:54:16 · 97 阅读 · 0 评论 -
OS 死锁处理
同理C中mutex从0变为-1,那么如果想离开阻塞态,那么就需要执行V(empty)但是如果执行V(empty)就需要P(mutex)需要V(mutex) 进入死锁状态。如果P先申请mutex 则mutex从1置零,假设申请到的empty = 0则empty变成-1阻塞态。原创 2023-08-31 22:05:45 · 343 阅读 · 0 评论 -
OS 进程同步与信号量 && 信号量临界区保护&&信号量代码实现
信号量:通过对这个量的修改和访问,让大家有序推进。counter已经不能满足所需,不能判断睡眠了几个进程mutex是互斥信号量,表示一次只能进一个进程。原创 2023-08-31 21:28:33 · 46 阅读 · 0 评论 -
CPU调度策略
FIFO:先入先出:简单有效,无优先级周转时间(任务进入到任务结束)短、响应时间(操作发生到响应)短、吞吐量(完成的任务量)大,总而言之:耗时短,效率高一个进程切换到别的进程再切换回来的时间差就是响应时间吧IO约束型任务 比如银行系统 word不断写入写出CPU约束型任务 比如gcc一直编译一段程序IO的优先级高一点(IO更接近与用户交互的界面,需要反应快)原创 2023-08-31 15:40:18 · 224 阅读 · 0 评论 -
OS 用户级线程
这个程序执行到D,Yield()跳到204,然后出栈404出错。原创 2023-08-24 19:56:06 · 82 阅读 · 0 评论 -
OS 多进程图像
执行的每个程序,包含数据都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(PCB,Process Control Block)。进程与PCB是一一对应的,用户进程不能修改。schedule()函数为切换进程函数,pCur.state被置为阻塞态,放入磁盘等待队列。pCur和pNew都为对应pcb(为了使参与。FIFO无优先级,先进先出。原创 2023-08-21 21:37:01 · 104 阅读 · 0 评论