linux操作系统实验五--Linux操作系统是如何工作的?

学号:SA*****340

    这篇博文主要研究Linux操作系统是如何工作的?主要从以下几个方面进行分析,它们是linux操作系统正常工作核心的几个部分。

一、操作系统工作的基础

1、存储程序计算机

    存储程序计算机就是冯·诺伊曼结构,其核心思想是把计算机执行时需要的指令和数据存储起来,不用硬件来实现指令,从而改善计算机的灵活性,计算机可以很容易地改变其程序地址。在执行程序时CPU根据当前程序指针寄存器的内存取出指令并执行相应的指令,然后再进行下一条指令的读取并执行,如此循环直到程序结束时才停止执行。这个执行过程可以简化如下:

图1 计算机简单的工作原理

2、函数调用堆栈

    另外一个重要的计算机工作机制就是分析堆栈,这是计算机工作不可忽视。进程是CPU执行的基本单位,每个进程都有自己独立的内存空间,进程的内存地址空间可以用下图来表示:

图2 进程的虚拟内存空间
    重点分析进程的用户态占用空间以及8KB的内核空间。
    计算在执行的过程中,需要存储很多的临时数据,然而这些数据只是在某个运行阶段需要,不会在整个运行阶段使用,而是动态的随着程序的运行而生成的。因此需要一个动态地管理临时数据的机制,这个机制就是堆栈(函数调用堆栈)。堆是一个长期存放永久数据的容器,栈则是随着函数的动态调用而发生变化的,在进行函数调用时,用户态的栈会保存函数的返回地址、cs:eip等相关寄存器的值、函数参数以及局部变量等等。如果系统进行系统调用或者中断处理时候,内核栈会保存中断函数返回地址和其它一些重要的参数,堆栈的作用不言而喻。
堆栈的工作机制可以参见这篇博文计算机是怎么工作的?

3、中断处理机

    中断事件改变处理器执行指令的顺序,使得处理器转而去执行正常控制流之外的代码。中断处理机制可以使计算机能够并发的执行程序,从而改变之前的顺序执行指令的工作模式,提高计算机的运行效率。
以上介绍的三个方面是linux操作系统正常工作管理必不可少的部分。有了上面三个条件,计算机可以执行一个可以变更的、可以管理运行时数据的程序了。

二、linux操作系统是如何工作的?  

    有了上述几个条件后,可以上计算机可以同时运行批量的程序,操作系统能够帮助计算机高效、安全管理这些程序。在计算机启动时,所有的硬件条件准备好后,开始启动start_kernel完成操作系统自身的初始化,并且随后启动一个进程init。之后的所有进程都是在这个进程的基础上创建的。
当用户态的进程在执行过程中来了中断,那么就会进入内核态,这时必须把esp,eip等重要的值压入之前进程的内核栈,然后进行SAVE_ALL,把CPU的一些寄存器的值压入内核栈,然后进行中断处理,中断处理之后进程切换,调用switch_to切换到另外一个进行继续执行。新执行的程序会在它上一次被switch_to切换出去的地方继续执行,然后进行中断恢复restore_all和中断返回iret,从内核态切换出来进入用户态,在用户态继续执行相应的指令。然后如此循环。
从进程执行的角度进程分析: 当前进程X在运行,当前的esp寄存器指向进程X的用户栈的栈顶,eip指向进程X的代码段,假设进程X的时间片用完,这时候发生中断,那么CPU要做两件工作,1是将当前的eip和esp压入到进程X的内核栈,2是将esp指向进程X的内核栈,并将eip指向中断处理入口,进入到内核态。在进行SAVA_ALL即保存相关寄存器等之后,开始执行中断处理程序,进行的切换与调度就是发生在中断处理程序中。根据相应的调度策略,选择下一个要执行的进程next,并切换到进程next。这里内核是通过执行switch_to来进行进程切换的,在switch_to中主要进行了进程的寄存器register和进程的内核栈stack的切换。当进程切换完以后,esp就指向了进程Y的内核栈,可以看到,在进程Y的内核栈中保存着进程Y被挂起以前的esp以及eip,进程弹栈操作,现在的eip指向的就是进程Y的代码区,而esp就只想进程Y的用户栈,这样通过esp和eip的的切换就切换到了进程Y继续执行,完成了整个进程从X切换到进程Y。

图3 中断处理及进程切换调度


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 实验目的 1、掌握在虚拟机环境下安装 Linux系统 2、熟练掌握基本 shell命令 3、熟练掌握shel1高级操作 二、 开发工具和运行环境 Vmware15虚拟机,Centos7的iso镜像文件 实验内容 1、在虚拟机环境下安装 CentOS7操作系统 如果有虚拟机环境,可以直接安装,如果没有,需要先行安装虚拟机软 件。 Linux的安装步骤: (1)选择界面安装 (2)语言选择 (3)选择安装信息 (4)选择安装软件 (5)设置磁盘分区方案 (6)手动分区 (7)设置根口令及验证 2、基本 shell命令 1)pwd命令:显示当前所在目录 (2)date命令:显示日期 ()who命令:显示当前正在系统中的所有用户名字,使用终端设备号, 注册时间 ()cal命令:显示某年内指定的日历 (5) uname命令:查看当前操作系统的信息 (6)wc命令:统计文件中的文件行数、字数和字符数 (7) clear命令:清屏 3、在线帮助命令 ()man命令名:显示该命令的功能、选项等说明() whatis命令名:只给出简单介绍信息 (3)nfo命令名:另外一种帮助命令 (4)help命令名:显示内置命令( shell) 4、 Shell命令的高级操作 (1) shell的命令补全: 先输入命令的前几个字母,然后按[TAB]键,如果与输入字母匹配的 仅有一个命令名或文件名,系统将自动补全,如果有多个与之匹配,系统 将发出报警声音,如果再按一下[TAB]键,系统将列出所有与之匹配的命 令或文件名。 (2) shel的历史命令: 在提示符下输入 history命令查看所有历史命令若执行以前历史命令 列表中的某一个命令,则执行“!n”,n为历史命令列表中的编号。向上 方向键可以翻出最近使用的命令 (3) shell的重定向 输出重定向符号有“>”和“>>”,输入重定向符为“<”。错误重定向 输出“2>”,把命令行出错的信息保存到指定的文件中去 4)shel1的管道操作: 管道线“”前面的命令的输出是管道线“”后面命令的输入。 命令1命令2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值