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

学号:SA11226254

一.操作系统工作的基础

1.存储程序计算机
首先,我们先了解一下什么是存储程序计算机。通过google维基百科,我们知道存储程序计算机最早是由著名数学家冯·诺伊曼等人在1946年总结并明确提出来的,因此又被称为冯·诺伊曼计算机

存储程序计算机在体系结构上主要特点有:

  1. 以运算单元为中心
  2. 采用存储程序原理
  3. 存储器是按地址访问、线性编址的空间
  4. 控制流由指令流产生
  5. 指令由操作码和地址码组成
  6. 数据以二进制编码
2.堆栈(函数调用堆栈)机制
用ESP代表堆栈顶,即堆栈指针,用EBP代表堆栈底,即基址指针。还有cs:eip总是指向下一条的指令地址等等机制。
3.中断机制
有了中断机制,我们就可以在执行某个程序时调用其他的程序来配合我们来完成任务。即可以改变指令执行的顺序,来协调CPU和外部设备的工作。
二.LINUX内核如何工作?
LINUX中的每个进程是分为内核态和用户态。用户态和内核态各自具有独立的堆栈。当我们系统调用,需要从用户态切换到内核态时,产生中断,这时候需要将当前的eip和esp压入到进程的内核堆栈,通过加载TSS,esp指向内核态,而eip指向中断后需要执行的内核代码,然后SAVE所有的寄存器,最后开始执行指令。中断完后,我们内核中的进程是可以切换的,schedule()函数选择一个新的进程来运行,并调用context_switch进行上下文的切换,这个宏调用switch_to来进行关键上下文切换,在switch_to中,我们把当前A进程的esp,eip保存在prev中,把需要被调度的B进程的esp,eip保存在next中,当切换成功后,我们现在的esp就指向了B进程的内核栈,eip就指向了需要执行的指令,这样就从A进程切换到了B进程,最后通过执行restore_all 和 Iret,从内核态返回到用户态。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值