操作系统一些知识
一只特立独行的猪( ﹡ˆoˆ﹡
精益求精
展开
-
死锁----
死锁发生的条件:原创 2024-07-25 16:21:24 · 167 阅读 · 0 评论 -
键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???
当打印完后需要响应一次中断,之后CPU还需要将内存的打印字符再送到打印机的寄存器中,会极大浪费cpu的开销。此时加入一个DMA机制来缓解CPU的的开销,将数据移动的任务交给DMA,只需要在所有打印任务完成之后触发一次中断,最后恢复应用程序1的后续操作即可。原创 2024-07-23 20:25:42 · 538 阅读 · 0 评论 -
系统调用【用户态和内核态之间的转换的基本流程】
当我们从用户态转入到内核态时往往需要通过系统调用,在使用printf函数时,可能内部会调用一系列其他函数来到达对操作系统的调用接口。将printf封装这是库函数,方便我们进行使用,在printf中会有一个write()函数,此时通过write系统调用的接口进入内核态,内核态中同样也有write函数,此函数里面会出现out或者in操作。2.根据调用的方法来获取系统调用号,因为在系统调用程序时需要通过系统调用表(操作系统初始化时确定的)来决定调用具体哪一个方法。1.将用户态寄存器的地址保存到pt_regs中。原创 2024-07-23 21:13:40 · 726 阅读 · 0 评论 -
CPU与IO设备交互
程序执行时判断状态寄存器是否为busy,如果busy则等待,如果ready则将内存的数据写到exa寄存器中,再将寄存器里的值写数据寄存器里面,此时需要处理数据,所以设置状态寄存器为busy,再将数据加载到命令寄存器中,通过控制电路去打印相应的数据,当打印完成时再将设置为ready,ready时才可以往数据寄存器内写入数据,通过一个中间件来完美地控制打印机的操作。通过判断状态寄存器是否busy或者ready来决定是否将数据加载到寄存器里。问题:CPU如何知道将数据发送给哪一个寄存器?原创 2024-07-23 18:36:20 · 226 阅读 · 0 评论 -
操作系统的启动以及用户态和内核态
开始时通过bootloader将os程序从磁盘加载到内存中,cpu通过读取内存中的操作系统指令进行操作。应用程序通过系统调用和操作系统交互,操作系统和外设可通过两种方式进行交互,例如汇编指令和中断机制。1.计算机通电后,主板接上电,cpu执行主板上的bios指令,bios检查bootloader指令,将其加载到内存中。2.cpu执行bootloader指令,bootloader将os程序从磁盘加载到内存中。内核态:是操作系统进行时的状态,在操作系统中出现一些特权指令是被允许的。原创 2024-07-23 17:43:49 · 189 阅读 · 0 评论 -
操作系统的作用
原创 2024-07-23 17:04:59 · 141 阅读 · 0 评论 -
计算机中的物理内存
无论是读地址还是写地址都必须给数据一个地址。地址引脚有十位,数据有八位。原创 2024-07-16 15:58:29 · 234 阅读 · 0 评论 -
简单理解CPU的执行过程
首先,CPU通过pc(程序计数器)寄存器通过地址总线找到,内存地址对应的指令(将高级语言经过编译汇编链接形成的二进制指令),拿到指令,放到cpu的指令寄存器中,然后对指令寄存器的指令进行解码。再通过运算器去执行相应的操作。原创 2024-07-16 17:11:46 · 235 阅读 · 0 评论