操作系统是如何进行工作的

李亚健    《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、实验过程

实验内容为完成一个简单的时间片轮转多道程序内核代码

1.根据老师指导按照实验步骤,在实验楼环境下打开shell:

cd LinuxKernel/linux-3.9.4

rm -rf mykernel

patch -p1 < ../mykernel_for_linux3.9.4sc.patch

make allnoconfig

make

qemu -kernel arch/x86/boot/bzImage

然后 cd mykernel

看到mymain.c和myinterrupt.c.

2.将老师github的mypcb.h/mymain.c/myinterrupt.c拷贝到实验楼环境的mykernel下,再按照实验步骤进行,即可看到实验的调度过程.修改这三个文件:

mypcb.h:

mymain.c:

myinterrupt.c:

3.重新make编译一下,然后执行会看到结果:

二、分析该精简内核的源代码。

1.mypcb.h对结构体和函数进行了定义.定义了线程的ip与sp 线程的结构,其中SP寄存器指向当前线程栈的栈顶,这样通过SP就能完成出入栈的操作;IP指向当前操作指令,一开始指向线程启动函数,后面按照代码的一层层调用,执行相应指令,接下来定义了进程控制块PCB的初始信息。

2.mymain.c中__init my_start_kernel 函数是内核的入口,它完成了初始化进程并启动进程的工作。 进程创建完毕后,将my_current_task指针指向0号进程,通过嵌入式汇编代码,开始执行。这个嵌入式代码实际上是开辟了新的栈帧空间,类似于上一课,也与myinterrupt.c的进程切换类似。 每个进程都执行my_process(void),i%10000000 == 0,打印进程号,略小于1s的时间。

3.myinterrupt.c中my_timer_handler被内核的定时器周期性调用,当计数到1000时执行进程切换。

4.其中的内嵌汇编代码为核心:

"pushl %%ebp\n\t" /* save ebp */

"movl %%esp,%0\n\t" /* save esp */

"movl %2,%%esp\n\t" /* restore esp */

"movl %2,%%ebp\n\t" /* restore ebp */

"movl $1f,%1\n\t" /* save eip */

"pushl %3\n\t"

"ret\n\t" /* restore eip */

: "=m" (prev->thread.sp),"=m" (prev->thread.ip)

: "m" (next->thread.sp),"m" (next->thread.ip)

"pushl %%ebp\n\t" /* save ebp */

"movl %%esp,%0\n\t" /* save esp */

"movl %2,%%esp\n\t" /* restore esp */

"movl %2,%%ebp\n\t" /* restore ebp */

"movl $1f,%1\n\t" /* save eip */

"pushl %3\n\t" "ret\n\t" /* restore eip */

: "=m" (prev->thread.sp),"=m" (prev->thread.ip)

: "m" (next->thread.sp),"m" (next->thread.ip)

三、理解操作系统是如何工作的。

1. Linux操作系统的正常工作可以说有三个非常重要的部分,就是我们的存储程序原理、堆栈以及中断的支持。 操作系统对进程的管理主要就是进程的管理和调度,我们为每个进程维护一个进程描述和以及进程间的关系。我们的内核的工作主要有两部分组成,首先运行有一个内核线程,然后就是一些中断处理程序的集合,我们在中断处理程序中要就行进程的调度。

2.Linux操作系统由内核来实现具体工作的,一个进程是通过系统调用fork()函数来创建的,先是将先前CPU正在运行的进程的进程上下文保存在内核态堆栈中,包括有eip,esp,ebp,cs等寄存器的数据;然后加载创建的进程的上下文信息到相应的寄存器中,运行当前新建进程;运行完毕后根据系统的调度继续执行相应的进程。Linux操作系统是多进程的操作系统,不同的进程就是基于以上的方式有操作系统实现调度运行的。同时,操作系统以一种中断的机制实现与用户的交互。操作系统中的IDT描述好各个中断对应的处理程序,当发生相对应的中断时,由硬件来实现中断信号的传递,CPU接收到相应的IRQ信号后,由操作系统如调度进程那样调度相应的处理程序,来完成相应的中断请求,实现与用户的交互。

时间: 2024-10-06 23:11:19

操作系统是如何进行工作的的相关文章

文件打开的过程——调用fd=open()时操作系统所做的工作

fd=fopen()是一个系统调用.用于依据文件名称打开一个文件.返回该文件的文件描写叙述符,文件打开后进程便能够依据文件描写叙述符fd进行其它操作,比方读,写,关闭等操作. 各个操作系统打开文件的过程是类似的,本文以Unix为例,介绍打开一个文件操作系统所做的工作.正式介绍这个过程之前先简要介绍几个概念. PCB(process control block)进程控制块.它是一个内核数据结构,相当于一个档案,是操作系统感知进程存在的唯一标识.包含进程状态,进程id,PC,寄存器,内存信息,文件打

360安全浏览器已经完成和统一操作系统UOS的适配工作

导读 统信软件公司宣布,360安全浏览器已经完成和统一操作系统UOS的适配工作.如今,基于龙芯.兆芯.飞腾.海光等国产CPU的统一操作系统UOS,赢全面支持电子公文.电子签章.流版式办公插件等近百款国内主流应用软件. 据介绍,360安全浏览器搭载了商用密码算法模块.国产安全协议模块,藉此统一操作系统UOS将全面支持国密通信,有效提高网络信息通信的安全性.值得关注的是,通过与360浏览器的适配,国产CPU也第一次实现了1080p高清视频在线播放,大大提升了视觉体验.360安全浏览器2007年诞生,

批处理操作系统与分时操作系统的工作方式

1.批处理系统.分时系统工作方式以及系统常用调度算法. ①批处理操作系统 批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动.依次执行每个作业.最后由操作员将作业结果交给用户. 批处理操作系统的特点是:多道和成批处理. ②分时操作系统 分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户

在VMware虚拟机上安装Linux操作系统(Ubuntu)

一,虚拟机的安装: 1,目前比较常见的虚拟机(Virtual Machine),来源度娘:                                   Virtual PC                                   Virtual Box                             VMware Workstation VirtualBox VirtualBox是开源的,不同于VM,而且功能强大,可以在 Linux/Mac 和 Windows 主机中

kickstart无人值守自动安装操作系统

            本次文章部分参考老男孩博客张导文章 PXE是什么? PXE(Pre-boot Execution     Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial     file transfer protocol)或MTFTP(multicast trivial fi

操作系统原理2——OS结构

操作系统原理2——OS结构 计算机系统是由硬件系统和软件系统两部分组成, 操作系统是软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个基本的了解,本章就是讲述计算机系统结构的基本知识. 本章的考核 知识点 是: 1.计算机系统的层次结构 2.硬件环境 3.操作系统结构 学习本章要求:了解计算机系统的结构,有关硬件的I/O中断和存储结构,硬件的保护措施:有关操作系统的结构,操作系统提供的使用接口. 重点 是:硬件环境和操作系统的结构 一

操作系统原理(转)

操作系统原理   我们每天都同操作系统打交道,了解一些操作系统原理上的知识是绝对有必要的,它可以让你了解操作系统内部是怎么工作的,为什么会出现这样那样的问题,为我们解决这些问题提供思路. 本文完全是为普通电脑用户写的,省略了所有难以理解的算法.原理,没有太多细节上的东西,只是针对普通电脑用户可能感兴趣的问题给出了实现思想.写这些东 西只是我的一相情愿,就怕我还是写得深了些,初学者读不懂.如果这10K文字能让你对操作系统有更深的了解,那也就不枉了这几个汗流浃背的夏日午后了. Q:什么是中断?A:中

巨杉数据库与深度操作系统合作共建基础软件技术生态

近日,巨杉数据库与深度操作系统完成互认证工作,建立全面技术合作,共同推进国内基础软件生态的建设. 经双方共同严格测试,SequoiaDB 巨杉数据库与深度操作系统ARM服务器版软件V15共同稳定运行,安全可靠,性能卓越,相互兼容,可为企业级应用提供全面保障. SequoiaDB 巨杉数据库是一款完全自研的,金融级分布式关系型数据库,其自研的原生分布式存储引擎支持完整 ACID,具备弹性扩展.高并发和高可用特性,支持 MySQL, PostgreSQL 和 SparkSQL 等多种 SQL 访问形

04-计算机操作系统

目录 计算机操作系统 一.什么是文件? 二.什么是程序? 三.操作系统的定义 四.为什么要有操作系统? 4.1 应用程序 4.2操作系统 4.3 计算机硬件 五.操作系统有什们用? 六.操作系统和应用程序的启动 七.QQ启动的详细流程(Windows) 计算机操作系统 一.什么是文件? ? 计算机文件是以计算机硬盘为载体存储在计算机上的信息集合.文件可以是文本文档.图片.程序等等.文件通常具有三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以 JPEG 格式保存并且文件扩展名为 .jp