linux C 编程 一站式学习(一)

本文阐述了CPU如何通过内存映射I/O和端口I/O访问设备,以及操作系统如何通过内核管理进程调度、内存分配和各种设备。重点介绍了中断机制在设备数据通知CPU过程中的作用,同时详细讲解了Linux操作系统中设备驱动程序的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从CPU角度来说,访问设备就有两种方式:

(1)内存映射I/O:无论是CPU外部接总线,还是CPU内部接总线设备,都有各自的地址范围;

(2)端口I/O:访问设备寄存器时用特殊的in/out指令;

CPU通过内存映射I/O和端口IOf访问相应的总线控制器,通过总线控制器再去访问挂在总线上的设备。


操作系统本身是一段保存在磁盘上的程序,计算机在启动时执行一段固定得到启动代码(称为Bootloader)首先把操作系统

从磁盘加载到内存,让手执行操作系统中的代码把用户需要的其他程序加载到内存。

操作系统最核心的功能是管理进程调度、内存的分配使用和各种设备,做这些核心工作的是内核(kernel),计算机启动时加载到内存并常驻内存。

设备往往会产生数据,并主动通知CPU来读这些数据,这是由中断机制来实现的,每个设备都有一条中断线,通过中断控制器连接到CPU,当设备

要主动通知CPU时就会引发一个中断,CPU 正在执行的指令将被打断,程序计数器会指向某个固定的地址,于是CPU从这个地址开始取指令,执行

中断服务程序(Interrupt Service Routine,ISR),完成中断处理之后,再返回先前被打断的地方继续执行。

linux 源码代码中绝大部分是设备驱动程序,设备驱动函数是内核中的一组函数,通过读写设备寄存器实现对设备的初始化、读、写等操作,有些设备

还要提供一个中断处理函数共ISR调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值