浅谈Linux操作系统是如何工作的?

关于fork&exec之进程的创建和可执行程序的加载过程 中科大SA***243-石润成 一、预备阶段 实验环境:Ubuntu10.04 分析内核版本:Linux-2.6.11 1.编写一个fork和exec程序 myfork.c #include #include #include int main() { pid_t pid; pid = fork(); if(0 == pid) { ex 阅读详情

    SA****243 石润成

    操作系统工作的三个关键基础分别是:存储程序计算机、堆栈(函数调用堆栈)机制和中断机制;

    操作系统其实也是一个程序,linux的操作系统主要由汇编和C语言组成。

    那么从整个角度考虑,程序是需要被装载到存储器中的,当我们将程序代码编译成ELF格式时,里面包含了整个程序运行时所需要的各种信息(代码段、数据段等等),存储程序计算机存在哈佛结构和冯诺依曼机构,结构不同,程序各段的存储位置也不相同。

    当程序被加载到内存中运行时,是通过CPU将一条一条的指令从代码存储器中读取出来的执行的,如果不需要多任务,且没有函数调用什么的,CPU只需一条一条指令的读取运行下去就可以。明显这种机制是不利于程序模块化,这样有了堆栈,就可以将函数代码进行隔离,请参考http://blog.youkuaiyun.com/ustc_max/article/details/8917979,这里再多加一点就是,CS:EIP(CS是包含程序指令的的段,EIP为指令段偏移量)为指向当前CPU所要执行的指令, 而EBP和ESP用来保护一个函数的栈基地址和栈顶,主要保存函数的返回地址和函数的内存局部变量参数,这样当函数调用结束后能够及时返回上层调用函数的下一句执行语句继续执行。

    但随着计算机越来越复杂,有时候会有一些突发事件需要及时处理,这就诞生了中断机制,linux操作系统的中断通常分为同步中断和异步中断,主要通过IDT中断描述符表来描述,IDT包括中断和异常向量,当发生了一个中断或者异常时,系统会根据中断向量号来调用相应的中断异常程序,那么中断的过程中,同样会涉及中断现场保存和恢复的机制,由堆栈完成,涉及的寄存器有idtr寄存器用来指向IDT表项的第i项,找到对应的段选择符,根据段选择符在GDT全局描述符中找到自己的段描述符,也就知道了中断或异常的程序地址,故障发生时保存引起故障的指令地址到cs和eip中,并在栈中保存eflags,cs和eip内容,若有硬件出错码,则也保存在栈中,然后执行中断程序代码,当处理完时,通过iret返回,中断也分优先级用于中断嵌套,整个中断在内核中发生。

   为了实现多任务操作系统,这就有了进程和线程,这里只讨论进程,多任务就意味着多个程序并发的执行,并发并不意味着并行,而是在不同的进程之间切换,中断处理与进程切换有一个明显的差异就是,中断处理是一个内核控制进程,它是在单个进程中发生的,因而比进程要轻得多,从linux的内核代码分析,进程的描述符结构是task_struct,进程是以链表形式存储的,且根据进程状态的不同分别形成不同的链表存储,而内核对进程的切换和调用的关键点在于schedule()这个函数,这个函数的主要功能是切换页全局目录以安装一个新的地址空间以及切换内核态堆栈和硬件上下文,其中关键宏switch_to宏完成进程你内核态和硬件上下文的切换。为了使不同进程之间公平的竞争CPU,Linux最常用的机制是动态优先级机制,进程的优先级会随着时间和自身的优先级改变,另外linux还提供了进程通信机制,让进程运行更加灵活。

AntV G6边动画实战:手把手教你实现数据流向箭头与虚线流动效果 本文详细解析了如何使用AntV G6实现数据流向箭头与虚线流动效果,通过自定义边动画提升数据可视化的动态表现力。从基础环境搭建到核心概念讲解,再到虚线流动动画和箭头路径动画的具体实现与参数调控,帮助开发者掌握G6边动画的高级技巧,适用于网络流量监控、数据传递等场景。 阅读详情

相关推荐

自动驾驶仿真:基于Carsim开发的加速度请求模型

1、自动驾驶行业中,算法端对于纵向控制的功能预留接口基本都是加速度,我们需要给控制器仿真加速度的信号,控制器才会实现对纵向功能的控制。2、Carsim或者其他动力学软件,主要提供者节气门开度和主缸压力进行控制。我们在进行联合仿真时,往往都要通过PID的方式将请求加速度转换成对应的节气门开度与主缸压力传给动力学软件进行闭环控制。

zataji的博客 6915

分析单任务计算机操作之反汇编C程序

-中科大_243_石润成 本文旨在借助分析一段c语言程序反汇编代码来描述单任务计算机是如何工作的,不考虑中断等复杂操作。如有错误,希望读者能够反馈给我,不胜感激!          1.预备阶段 本文以example.c为例,代码如下: #include int g(int x) { return x+3; } int f(int x) { return g(x

ustc_max的专栏 1279

基于STM32和MPU6050的手势控制小车设计与实现

MPU6050传感器:用于检测手势变化,采集加速度和陀螺仪数据。STM32微控制器:处理MPU6050传感器的数据,根据手势变化控制小车的运动。电机驱动模块:接收来自STM32的控制信号,驱动小车的电机,实现小车的前进、后退、左转和右转。小车底盘:作为整个系统的机械部分,提供移动平台。MPU6050是一款集成了3轴加速度计和3轴陀螺仪的传感器,具有高精度、低功耗和小体积等特点。它通过I2C接口与微控制器通信,可以实时采集加速度和角速度数据,广泛应用于运动检测、姿态控制和手势识别等领域。

m0_57781768的博客 2309

浅谈Linux操作系统基础知识

Linux操作系统认知 1.1操作系统(英文名简称为OS) 定义:操作系统是用户与计算机硬件之间的界面,是控制、管理计算机系统内各种硬件和软件资源,有效地组织多种程序运行的程序集合。从下面插图可以看出操作系统是第一层软件,凌驾于软件和硬件之间,是其他平台运行的基础。控制管理系统资源,以便用户使用。(2)操作系统功能:1. 是控制和管理计算机硬件和软件资源的计算机程序。2. 最重要的系统环境。3. 管理各种其他的软件和程序的运行。4. 对系统中文件进行管理。 (3)操作系统分类:1. 桌面操作系统:主要

m0_71450099的博客 1万+

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader+Application双备份(含完整代码解析)

本文详细介绍了基于STM32F103VET6微控制器和W25Q64外部Flash实现Bootloader+Application双备份固件升级的完整方案。通过精心设计的Flash分区策略、可靠的Bootloader程序以及包含双重校验和自动回滚机制的升级流程,有效解决了远程升级过程中断电导致设备变砖的风险,确保了工业嵌入式系统的高可靠性与稳定性。

linux的博客 823

ubuntu18.04 升级Ubuntu 20.04

Ubuntu 18.04升级20.04指南:首先备份重要数据,更新当前系统并检查新版本可用性(sudo do-release-upgrade -c)。确认升级后执行sudo do-release-upgrade,按提示完成操作。升级过程需耐心等待,完成后重启系统。注意:升级前务必备份数据,确保系统为最新版本,以降低风险。升级后即可使用Ubuntu 20.04系统。

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 1060

献给初学者:谈谈如何学习Linux操作系统

推荐:10年技术力作:《高性能Linux服务器构建实战Ⅱ》全网发行,附试读章节和全书实例源码下载!一、 选择适合自己的linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝...

weixin_33712881的博客 3750

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型

本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。

corn8的博客 613

浅谈Linux操作系统

Linux是什么?与Windows有何区别? Linux是一套免费使用和自由传播的类 Unix 操作系统。Linux是开源的,它遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。由于 Linux 是自由软件,所以任何人都可以创建一个符合自己需求的 Linux 发行版。 目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要原因如下: 区别 Window..

Growing up Or Growing old 1270

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

专注于编程、AI、人工智能等多个领域内容研究和分析 591

浅谈操作系统是如何工作的及简单的进程调度的linux实现

浅谈操作系统是如何工作的及简单的进程调度的linux实现 1)进程的启动和切换机制 a)进程的启动机制 保存ebp的值到栈, 将esp的值保存在prev->thread.sp,在下一步esp的值被改变 将next->thread.sp的值赋到esp 将next->thread.sp的值赋到ebp prev->thread.ip值赋为1 保存next->thread.

Bing's Blog 1134

12、控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示

控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示1、用到的控件2、添加控件2.1、添加【文本录入】控件2.1、添加【文本显示】控件2.1、添加【QR 二维码】控件3、保存工程及生成文件4、下载文件 1、用到的控件   需要用的显示控件为【文本显示】控件和【QR二维码】控件,以及触控控件【文本录入】控件。 2、添加控件 2.1、添加【文本录入】控件   【文本录入】控件也叫【ASCI 文本录入】,是用来录入ASCI 字符,打开 DGUS 软件,点击【触控控件】—【文本录入】,用鼠标框选一个区域,即可在右

嵌入式羊圈 626

浅谈操作系统与初识Linux

本节主要介绍Linux的产生相关的问题,简要描述了操作系统的概念与Linux中登陆相关的几个基本指令

tianxhiliangtadi的博客 753

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

浅谈嵌入式LINUX操作系统的概念和特点

浅谈嵌入式LINUX操作系统的概念和特点 作者:魏 民 来源:自动化博览 发布时间:2005.01.24

欢迎光临zhtek的博客 1741

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Linux我做主】浅谈Shell及其原理

本文深入解析Shell的核心原理与高效使用技巧,帮助读者掌握这一重要工具

有梦想的电信狗 1858

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

浅谈操作系统

1969年8月,肯·汤普森趁着妻子回家探亲,用了1个月的时间,使用汇编语言,写出了一个简版的Multics系统(包括一组内核程序,一些内核工具程序,以及一个小的文件系统)。比较有名的,是Sun公司的Solaris、IBM公司的AIX、惠普公司的HP-UX,以及由BSD版本发展起来的FreeBSD。它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。Unics,对应Multics,是“单路信息与计算系统”的意思。

m_j_y0_0的博客 731

浅谈三大操作系统

今天浅谈一下三大操作系统(Operation System): Windows , MacOS , Linux。 适合码农使用的操作系统是:MacOS 和 Linux。 简答做了一个思维导图如下(仅供参考) 1.操作系统的作用 通过提供系统调用,控制和管理硬件。(应用软件 --> 操作系统 系统调用端口 --> cpu指令 调用硬件 -->...

weixin_30249203的博客 333

浅谈未来计算机操作系统的发展方向,浅谈未来计算机操作系统的发展方向

浅谈未来计算机操作系统的发展方向21 世纪是信息的时代,随着科学技术的不断发展与创新,计算机得到了广泛的普及和应用,同时计算机的操作系统也在不断的发展和完善当中。最重要的体现就是计算机技术的广泛应用及发展,操作系统作为计算机系统的基础是管理计算机软硬件资源、控制程序运行、改善人机界面和为应用软件提供支持的一种系统. 现在越来越智能的系统得到广泛的关注,本文主要是通过对操作系统及其发展情况来进行分析...

weixin_30509193的博客 6481

浅谈未来的操作系统

1 操作系统大致有这样一个发展历程,一开始是unix,那还是大型机的时代,计算机(硬件)的应用,普及程度都很低,一些大学里面会有,我觉得对这个话题感兴趣的人大概对linus并不陌生,如果看过《操作系统革命》这部纪录片那就更能了解我说的了。unix有很多缺点,这是必然的,《unix痛恨者手册》这本书可以说详细的描述了这些缺点,正是如此,windows的出现受到人们的欢迎,但是很快windows就开始...

三耳kz的博客 3431

浅谈Real-Time Linux

操作系统读书报告——浅谈Real-Time Linux摘要:本文通过对一个Real-Time Linux的实例NMT RT-Linux进行简单的分析,指出Linux在通用实时操作系统中发挥的作用。 Abstract: The paper introduces an exampe of Real-Time Linux, which is NMT RT-Linux finished by Vi

1001

浅谈 操作系统

操作系统 其实就是一个软件(software)。是一个用来进行管理的软件。进行什么样的管理呢?操作系统一般由 内核 + 配套的程序 组成。内核即一个系统最核心的功能:对下,能够管理好各种硬件设备;对上,能够为各种程序提供稳定的运行环境。

m0_63191002的博客 404

操作系统过程考核读书报告:浅谈计算机操作系统

操作系统过程考核读书报告:浅谈计算机操作系统

CAixukuncnm的博客 1128

浅谈 unix, linux, ios, android 区别和联系

  浅谈 unix, linux, ios, android 区别和联系   网上的答案并不是很好,便从网上整理的相对专业的问答。   1、UNIX 和 Linux   UNIX 操作系统(尤尼斯), 是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由 KenThompson、Dennis Ritchie和Douglas McIlroy于19...

weixin_30786617的博客 407

linux浅谈

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。包含系统范围的配置文件(发音为etsy),大型软件包(如gtk,python,X11)一般也在此处存储配置文件。包含系统用户的目录(每个用户的下载,图片等)包含与内核和正在运行的进程有关的文件。

向安全进发的博客 174
上一篇: 关于fork&exec之进程的创建和可执行程序的加载过程
下一篇: 学习Git之笔记一---关于Git版本下载和环境搭建和配置
ustc_max
博客等级 码龄14年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值