🏆个人主页:企鹅不叫的博客
🌈专栏
⭐️ 博主码云gitee链接:代码仓库地址
⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!,为了监督自己每周天晚上更新一章!
💙系列文章💙
文章目录
💎1.1信息就是位+上下文
🌈像hello.c这样只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
💎1.2程序被其他程序翻译成不同的格式
🌈翻译的过程可分为四个阶段完成。执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统
🌈预处理(预编译):文本操作 1.头文件展开(#include<stdio.h>) 2.宏替换 3.条件编译(#if) 4.去掉注释
生成.i文件
🌈编译:转化汇编代码 1.语法分析 2.词法分析 3.语义分析 4.符号汇总
生成.s文件
🌈汇编:汇编代码转化成二进制指令
生成.o文件
🌈链接:连接器将所有==.o文件链接起来生成可执政程序 (.out==)
💎1.3了解编译系统如何工作是大有益处的
- 优化程序性能
- 理解链接时出现的错误
- 避免安全漏洞
💎1.4处理器读并解释存储在存储器中的指令
🏆1.4.1系统的硬件组成
1.总线
贯穿系统的电子管道,携带信息字节在各个部件间传递。
2.I/O设备
输入输出设备是系统与外部设备联系通道
3.主存
临时存储设备,用来存放程序和程序存储设备
4.处理器
执行存储在主存中指令的引擎
🏆1.4.2运行hello程序
外壳程序将将输入字符逐一读入寄存器,再放入存储器当中
敲下回车后将hello目标文件中的代码和数据从磁盘复制到主存
💎1.5高速缓存至关重要
作为更小更快的存储设备,存放处理器可能会用到的信息。
💎1.6存储设备形成层次结构
寄存器文件就是Ll的高速缓存,L1是L2的高速缓存,L2是L3的高速缓存,L3是主存的高速缓存,而主存又是磁盘的高速缓存。在某些具有分布式文件系统的网络系统中,本地磁盘就是存储在其他系统中磁盘上的数据的高速缓存。
💎1.7操作系统管理硬件
操作系统是程序和硬件之间的一层软件,所有程序对硬件的操作都要经过操作系统
🏆1.7.1进程
进程是操作系统对一个正在运行的程序的一种抽象。一个系统可以运行多个进程
🏆1.7.2线程
一个进程可以由多个线程的执行单位组成,多线程比多进程更容易和共享数据,线程一般比进程高效
🏆1.7.3虚拟存储器
为每个进程提供独占使用主存的假象
🏆1.7.4文件
字节序列
💎1.8系统之间利用网络通信
系统可以读取从其他机器发送来的数据,并把数据复制到自己的主存。
当我们在telnet客户端键人“hello”字符串并敲下回车键后,客户端软件就会将这个字符串发送到telnet的服务器。telnet服务器从网络上接收到这个字符串后,会把它传递给远端外壳程序。接下来,远端外壳运行hello程序,并将输出行返回给telnet服务器。最后,telnet服务器通过网络把输出串转发给telnet客户端,客户端就将输出串输出到我们的本地终端上。
💎1.9重要主题
🏆1.9.1并发和并行
并发:同时具有多个活动的系统
并行:用并发使一个系统运行更快
单处理器系统:处理器必须在多个任务之间切换,实际计算也是由一个处理器完成的
超线程:多线程,是一项允许一个CPU执行多个控制流的技术。
指令级并行:在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行
单指令、多数据并行:允许一条指令产生多个可以并行执行的操作
🏆1.9.2计算机系统中抽象的重要性
在学习操作系统时,我们介绍了三个抽象:文件是对IO的抽象,虚拟存储器是对程序存储器的抽象,而进程是对一个正在运行的程序的抽象。我们再增加一个新的抽象﹔虚拟机,它提供对整个计算机(包括操作系统、处理器和程序)的抽象。虚拟机能够运行为不同操作系统或同一操作系统的不同版本而设计的程序。