2-4小时突击操作系统(1)

操作系统是计算机系统的核心,学习操作系统可以帮助我们深入理解计算机系统的工作原理,包括内存管理、进程调度、文件系统等,了解操作系统如何管理这些资源,可以帮助开发人员设计更高效的嵌入式软件。因此嵌入式软件乃至其它软件开发岗位操作相关相关知识点是必考的。

本节内容:操作系统介绍、进程、进程API、受限直接执行

操作系统介绍

程序运行:执行指令。处理器从内存中获取一条指令,对其进行解码(弄清楚这是哪条指令),然后执行它(做它应该做的事情,例如两个数相加、访问内存、检查条件、跳转到函数等)。完成这条指令后,处理器继续执行下一条指令。

操作系统:让程序运行变得容易(甚至允许同时运行多个程序),允许程序共享内存,让程序能够与设备交互,以及其它类似的工作。

虚拟化:操作系统将物理资源(如处理器、内存或磁盘)转换为更通用、更强大且更易于使用的虚拟形式。虚拟化让许多程序运行(从而分享CPU),让许多程序可以同时访问自己的指令和数据(从而共享内存),让许多程序访问设备(从而共享磁盘等),所以操作系统有时被称为资源管理器。

操作系统会提供几百个系统调用,让应用程序调用,因此有时候会说操作系统为应用程序提供了一个标准库。

虚拟化内存:每个运行的程序都有自己的私有内存,操作系统以某种方式映射到机器的物理内存上。一个正在运行的程序上的内存引用不会影响其它进程的地址空间。

抽象:进程

时分共享是操作系统共享资源所使用的最基本的技术之一。通过允许资源由一个实体使用一小段时间,然后由另一个实体使用一小段时间。空分共享,资源在空间上被划分给希望使用它的进程。例如,磁盘空间自然是一个空分共享资源,因为一旦将块分配给文件,在用户删除文件之前,不可能将它分配给其他文件。

进程只是正在运行的程序。进程可以访问内存(地址空间),程序读取和写入的数据在内存中。进程中的指令可以读取或更新寄存器。

操作系统运行程序必须做的第一件事是将代码和所有静态数据加载到内存中,加载到进程的地址空间中。程序最初以某种可执行格式驻留在磁盘上。还需要为程序的运行时栈分配一些内存,c程序使用栈存放局部变量、函数参数和返回地址。操作系统也可能为程序的堆分配一些内存,c程序中堆用于显式请求的动态分配数据。程序通过调用malloc()来请求这样的空间,调用free释放。数据结构需要堆。操作系统还将执行一些其他初始化任务,特别是与输入/输出(I/O)相关的任务。

进程状态:运行、就绪、阻塞

数据结构—进程列表:为了跟踪每个进程的状态

数据结构—进程控制块(Process Control Block, PCB):存储关于进程的信息

进程API

fork()

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等

全部评论
不是免费了😭
点赞 回复 分享
发布于 2023-04-19 14:09 广东
想问下博主,我操作系统和计算机网络没学过,现在马上秋招投嵌入式,我该怎么学这两门课?看一遍网课背八股可以吗?
点赞 回复 分享
发布于 2023-07-21 19:30 广东
这一页开始完全看不懂😂
点赞 回复 分享
发布于 2024-07-09 15:43 广东

相关推荐

2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司10个岗位
点赞 评论 收藏
分享
2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客企业服务