首页 文章 精选 留言 我的

精选列表

搜索[linux操作系统],共10021篇文章
优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.13 开启中断

2.13 开启中断 现在,系统中所有中断服务程序都已经和IDT正常挂接。这意味着中断服务体系已经构建完毕,系统可以在32位保护模式下处理中断,重要意义之一是可以使用系统调用。可以开启中断了!执行代码如下: //代码路径:include/asm/system.h: #define sti() __asm__ ("sti"::) //代码路径:init/main.c: void main(void) { … sti(); … } 图2-29给出了开中断后的效果,注意其中EFLAGS中的变化。

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.11 初始化硬盘

2.11 初始化硬盘 硬盘的初始化为进程与硬盘这种块设备进行I/O通信建立了环境基础。在hd_init()函数中,将硬盘请求项服务程序do_hd_request()与blk_dev控制结构相挂接,硬盘与请求项的交互工作将由do_hd_request()函数来处理,然后将硬盘中断服务程序hd_interrupt()与IDT相挂接,最后,复位主8259A int2 的屏蔽位,允许从片发出中断请求信号,复位硬盘的中断请求屏蔽位(在从片上),允许硬盘控制器发送中断请求信号。执行代码如下: //代码路径:init/main.c: void main(void) { … hd_init(); … } //代码路径:kernel/blk_dev/hd.c: //与rd_init类似,参看rd_init的注释

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.12 初始化软盘

2.12 初始化软盘 软盘和软盘驱动器可以分离,合在一起才是一个整体。为了方便起见,本书所述的软盘除特别声明之外都是指软盘驱动器加软盘的整体。软盘的初始化与硬盘的初始化类似,区别是挂接的函数是do_fd_request,初始化的是与软盘相关的中断。细节可参看初始化硬盘。执行代码如下: //代码路径:init/main.c: void main(void) { … floppy_init (); //与hd_init()类似 … } //代码路径:kernel/floppy.c: … void floppy_init(void) { blk_dev[MAJOR_NR].request_fn= DEVICE_REQUEST; //挂接do_fd_request() set_tr

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.1 设置根设备、硬盘

2.1 设置根设备、硬盘 内核首先初始化根设备和硬盘,用bootsect中写入机器系统数据0x901FC (见1.2.3节)的根设备为软盘的信息,设置软盘为根设备,并用起始自0x90080 的32字节的机器系统数据的硬盘参数表设置内核中的硬盘信息drive_info。具体执行代码如下: //代码路径:init/main.c: … #define DRIVE_INFO (*(struct drive_info *)0x90080)//硬盘参数表,参看机器系统数据 #define ORIG_ROOT_DEV (*(unsigned short *)0x901FC)//根设备号 … struct drive_info { char dummy[32]; } drive_info;//存放硬盘参数表的数据结构 void mai

优秀的个人博客,低调大师

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——3.3 轮转到进程1执行

3.3 轮转到进程1执行 在分析进程1如何开始执行之前,先回顾一下进程0创建进程1的过程。在3.1.3节中讲解调用copy_process函数时曾强调过,当时为进程1设置的tss.eip就是进程0调用fork( )创建进程1时int 0x80中断导致的CPU硬件自动压栈的ss、esp、eflags、cs、eip中的EIP值,这个值指向的是int 0x80的下一行代码的位置,即if (__res >= 0)。前面讲述的ljmp 通过CPU的任务门机制自动将进程1的TSS的值恢复给CPU,自然也将其中的tss.eip恢复给CPU。现在CPU中的EIP指向的就是fork中的if (__res >= 0)这一行,所以,进程1就要从这一行开始执行。执行代码如下: //代码路径:include/unistd.h: #define _s

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册