首页 文章 精选 留言 我的

精选列表

搜索[Linux内核],共10000篇文章
优秀的个人博客,低调大师

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操作系统架构设计与实现原理》——1.4 本章小结

1.4 本章小结 本章的内容主要分为两大部分。第一部分为加载操作系统;第二部分为32位保护、分页模式下的main函数的执行做准备。从借助BIOS将bootsect.s文件加载到内存开始,相继加载了setup.s文件和system文件,从而完成操作系统程序的加载。接下来设置IDT、GDT、页目录表、页表以及机器系统数据,为32位保护、分页模式下的main函数的执行做准备。一切就绪后,跳转到main函数执行入口,开始执行main函数。

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

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操作系统架构设计与实现原理》——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

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

Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.8 开机启动时间设置

2.8 开机启动时间设置 开机启动时间是大部分与时间相关的计算的基础。操作系统中一些程序的运算需要时间参数;很多事务的处理也都要用到时间,比如文件修改的时间、文件最近访问的时间、i节点自身的修改时间等。有了开机启动时间,其他时间就可据此推算出来。具体执行步骤是:CMOS是主板上的一个小存储芯片,系统通过调用time_init()函数,先对它上面记录的时间数据进行采集,提取不同等级的时间要素,比如秒(time.tm_sec)、分(time.tm_min)、年(time.tm_year)等,然后对这些要素进行整合,并最终得出开机启动时间(startup_time)。执行代码如下: //代码路径:init/main.c: void main(void) { … time_init(); … } #define CM

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册