编程语言
机器语言
机器语言 ===> CPU运行
由 “0” 和“1”组成的二进制数
汇编语言
汇编语言 ======> 一般可由硬件转换为机器语言 ===> CPU运行
一种低级语言,亦称为符号语言。
用一些容易理解和记忆的字母、单词来代替一个“0” 和“1”组成的特定指令。
注意点:
- CPU不同的指令架构有自己的机器语言指令集(电脑的x86 、x64,手机平板的ARM )
- 特定的汇编语言只能对应特定的机器语言指令集
- 所以不同的指令架构有着不同的汇编语言,汇编语言不能在不同的指令架构间移植
- 所以我们需要将高级语言根据不同指令架构编译成不同的汇编语言
高级语言
java、C等高级语言 =====> 编译器编译或解释成汇编语言 ======> 硬件转换为机器语言 ===> CPU运行
解释是把源程序翻译一句,执行一句的过程,而编译是源程序翻译成机器指令形式的目标程序的过程,再用链接程序把目标程序链接成可执行程序后才能执行
操作系统
作用和概念
计算机结构
操作系统怎样让用户使用的
操作系统运行机制
指令
用户态 核心态
进程、线程切换都需要用户态转换为核心态!
内核
内核中的模块均运行在核心态!!!
各自优缺点(注意:内核模块运行在内核态)
总结
中断机制
用户态与核心态是怎样切换的???
如进程、线程切换都是由中断机制产生的!!!(由操作系统内核在核心态下切换的)
中断分类
内中断(软中断),外中断(硬中断):
外中断处理过程
并根据中断信号,将对应的进程从阻塞队列中调入到就绪队列中
系统调用
系统调用: 就是用户(程序)对系统资源使用发起请求。
因为计算机资源是进程共享的,而操作系统就是对计算机资源协调管理的,用户进程不能直接使用计算机资源,由操作系统内核程序进行处理、协调这些请求。
所以:应用进程进行系统调用就会产生内中断,会将处理器从用户态变为核心态,再由操作系统内核块对调用请求进行协调执行。
我们使用的高级语言(C、java)是怎样使用系统调用的?
进程进行系统调用就会产生内中断, 由操作系统内核块对调用请求进行协调执行。
讲一下程序到运行的过程?(字节一面)
高级语言 ===> 编译成(汇编)指令文件保存到磁盘 ===> 当双击运行指令文件 ===> 系统会将指令加载程序到内存中 ===> CPU读取指令开始执行