0、什么是操作系统
一、代码的编译过程
当编写一个hello.c的文件运行时,它又是怎么成功编译显示在终端呢?
1、首先通过预处理器讲我们的代码处理,生成 .i 文件。
2、.i 文件通过编译器将代码转化成 .s文件。
3、.s文件再通过汇编器将代码编译成汇编语言 .o文件。
4、需要的.o文件(通过预处理阶段获取)通过链接器编译成机器可以识别的机器二进制代码
二、操作系统管理硬件
1、操作系统的分层视图
2、操作系统的抽象表示
3、操作系统的两个基本功能
- 防止硬件被失控的应用程序滥用
- 向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备
三、进程
当浏览器在运行时,操作系统会给一种假象,即好像系统上只有浏览器这个程序在运行,程序看上去时在独立地占用处理器,主存和I/O设备。进程是操作系统对一个正在运行程序的一种抽象。在一个操作系统上可以同时运行多个进程,而每个进程好像都在独立地使用硬件,
并发运行:一个进程的指令和另一个进程的指令是交错执行的。
操作系统保持跟踪进程运行所需的所有状态信息,这种状态,被称为上下文。
示例:
只是一个shell进程和一个hello进程,当shell程序需要执行hello进程时,shell保存上下文,然后创建一个hello进程和它的上下文,等hello进程完成后,恢复shell进程的上下文。
从一个进程到另一个进程的转换是由操作系统内核管理的,内核是操作系统常驻主存的部分。(内核不是一个单独的进程,它是全部进程所用代码和数据结构的集合)当应用程序需要操作系统的某些操作时,比如读写文件,它就执行一条特殊的系统调用指令,将控制权交给内核。由内核完成操作返回给应用程序数据。
四、线程
多线程学习
线程其实就是将一个非常庞大的程序分为很多细小的模块,每一个线程分别负责一块模块,这样不仅能更好的发挥计算机性能,也解决了很多开发遇到的问题。