操作系统1(什么是操作系统、程序和编译器)

文章阐述了操作系统的概念,作为管理和虚拟化硬件资源的软件系统。程序被视作状态机,其执行过程包含计算和系统调用。编译器在源代码和二进制代码之间起桥梁作用,确保正确编译。操作系统通过syscall接口供程序访问其功能,如进程管理、文件操作和存储管理。程序从加载到退出,遵循状态变迁的过程。
摘要由CSDN通过智能技术生成

1.什么是操作系统?

1.什么是操作系统?

对单一计算机硬件系统做出抽象、支撑程序执行的软件系统。通过“虚拟化”硬件资源为程序运行提供服务的软件。

操作系统可以访问任何硬件资源。

2.什么是程序?

程序就是一个状态机。

程序=计算+syscall

状态机视角的程序:

程序=计算->syscall->计算->...

编译正确:

编译正确就是指,现在有一个C代码状态机,一个汇编状态机,其中C代码状态机上有一些部分不可优化,不可优化就是指假设x是不可优化的一个变量,在C语言的状态机上我要读x,读一次就是读一次,读两次就是读两次,读一万次就是读一万次,不能优化它。 C代码定义了一个C代码的状态机,汇编代码也定义了一个状态机,正确的编译就是在C代码状态机上所有不可优化的部分都被正确的翻译到汇编代码状态机上。

3.操作系统中的一般程序

C语言和汇编语言其实本质上没有区别,区别只在编译器,它们只是同一个世界中的两个不同维度中的东西。

通过操作系统调用访问操作系统。

所有程序都是 计算→syscall→...这种状态机的运行

程序是个状态机

本质上,所有的程序和Hello World类似

  • 被操作系统加载

            通过另一个进程执行execve设置为初始状态

  • 状态机执行

            进程管理:fork, execve, exit. ...
            文件/设备管理: open, close,read,vrite,......
            存储管理:mmap, brk,...

  • 直到_exit (exit_group)退出

总结:

1.程序=状态机

2.在源代码S视角:状态迁移=执行语句

3.在二进制代码C视角:状态迁移=执行指令

在源代码和二进制代码之间有一个东西是编译器

编译器C=compile(S)

应用视角的操作系统:就是一条syscall指令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值