IO总结笔记

该内容课本也有。

中断器基本结构

 响应优先级 A>b>c 处理优先级 C>B>A

当前cpu在执行A的中断服务程序,所以屏蔽寄存器也是A的,则当BC信号同时到达是B,C都不会被屏蔽,INTR输出的BC的中断,同时判优线路会根据BC的响应优先级,判断应该执行B的中断服务程序。

则此时cpu处理的是B的中断服务程序,于是屏蔽寄存器也会变成B的,但是C的处理优先级还是比B高,于是经过和上述相同的过程后开始执行C的中断服务程序。

C执行完后恢复现场和屏蔽字,中断返回,执行B,B之后是A。‘

例题:

printf 

 

 

 A程序输出一个字符后就执行中断服务程序,此时A被中断,B开始运行。B运行的同时在运行中断服务程序。

 

因为在进程切换后页表也变化,字符串会被覆盖,所以要用到内核空间 

 

 DMA

 

 scanf

 

 

 先键盘输入,将数据送入到内核缓冲区,然后再从内核缓冲区,输出到用户缓冲区。

         首先是scanf,进行系统调用并,将进程插入阻塞队列,对应上面的图片 sleep_if_empty;
        然后用户在键盘上输入字符,这样键盘的设备控制器就有数据了,有数据之后就要启动中断处理程序;
        在中断处理程序取出字符,用驱动程序将取出的字符,送入内核缓冲区;然后再将内核缓存区的字符复制到用户缓存区;
        这一步完成后就可以从系统调用返回;
        之后就可以将p进程放回就绪队列了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值