Linux操作系统是如何工作的

本文介绍了Linux操作系统基于存储程序计算机原理的工作方式,详细讲解了栈在进程管理和函数调用中的作用,以及中断如何实现多任务并发执行。同时,阐述了内核在用户态与内核态之间的切换过程,包括系统调用、中断处理和进程调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 linux操作系统工作的基础      

1. 存储程序计算机

    按照冯·诺依曼存储程序的原理,计算机在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器的内容取出指令并执行指令,然后再取出下一条指令并执行,如此循环下去直到程序结束指令时才停止执行。linux操作系统就是以存储程序计算机的工作原理为基础去管理整个计算机以及整个计算机的执行工作流程。

2.

     进程是CPU执行的基本单位,每个进程都有自己独立的内存空间。当然我们这里要说的就是进程的用户态的空间以及8KB的内核栈,由于虚拟存储技术,每个进程都感觉自己享有完整的内存空间        栈为我们的函数调用以及进程的切换等等提供了不可磨灭的作用。当我们进行函数调用的时,用户态的栈会保存我们的返回地址、相关寄存器、函数参数以及局部变量等等一些相关条件;当我们进行系统调用或者其它中断的时候,内核栈会同样为我们保存返回地址、相关寄存器等一些相关信息,可以说栈是我们系统的正常执行必不可少的条件。

3. 中断

     中断是指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。中断技术的出现为多任务计算机提供了不可磨灭的作用,中断使得进程能够并发的去执行,大大提高了CPU的利用率。中断是多进程能够正常执行以及进程间的切换的必不可少的要素。

二、 内核是如何工作的

现代操作系统的工作状态分为用户态和内核态。程序以进程的方式起初工作在用户态:

1、当发生系统调用、进程调度、中断的时候,进程由用户态陷入内核态,此时操作系统将EIPESP压入内核栈,ESP指向内核栈栈顶,EIP指向中断处理程序的入口

2SAVE_ALL:保存进程的各个寄存器值到该进程的内核栈中;

3、进入中断处理程序;

4、内核调用schedule()函数进行进程调度,进入要执行的next进程的内核栈;

5Restore_all:回复现场,恢复next进程的寄存器值;

6iret:恢复EIPCS 以及 EFLAGS 寄存器;

7、系统从内核态返回到用户态。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值