啥是操作系统?
0.什么是计算机?
电脑 computer
硬件部分,什么cpu 内存 磁盘 声卡 网卡
软件部分,各种应用软件就算把
按照我之前读到过的一句话理解,其实计算机就是一个机器,主要有三个基本能力 输入+ 计算+ 输出
不用把计算机想的多复杂多复杂,原型就是小时候玩的计算器吗不是,只不过在此之上不断迭代才赋予了计算机更多能力。
那么计算机的关注点也很显然: 输入输出的IO能力,CPU计算能力,以及存储能力 也是覆盖了绝大多数的性能问题
1.什么是操作系统?
操作系统是管理硬件和软件的一种应用程序。
笨想,计算机这玩意就是一堆硬件机器来干活,能听懂的指令就是0101的,别说外行人用计算机了,就算是程序员也不能天天输入0101的指令来操作计算机啊,在底层基础上封装一层如何?
再有,就算我们真的可以直接通过0101指令来操作计算机,那处理器调度分配,进程管理,内存磁盘管理,各种计算机底层衔接操作,我们不能全都自己来做吧,稍有失误操作不当怎么办? 系统不得天天崩
这一想操作系统就应运而生了,也是必然的结果
操作系统就相当于我们操作计算机的管家,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层,使应用软件和硬件进行分离,让我们无需关注硬件的实现,把关注点更多放在软件应用上。
计算机上会运行着许多应用程序,它们都需要对内存和 CPU 进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。
2.操作系统的主要功能?
进程管理:解决处理器的调度,分配,回收等
内存管理:内存分配回收,页面置换
设备管理:对设备进行分配,为用户提供设备使用界面
文件管理:管理文件存储空间
提供用户接口:为用户提供了访问应用程序和硬件的接口调用
3.Linux系统下的应用能否直接在Windows运行?
答案是不能。
Linux 系统和 Windows 系统的格式不同,格式就是协议. Linux 下的可执行程序文件格式是 elf
。而 Windows 可执行程序是 PE
格式
还有一点是因为 Linux 系统和 Windows 系统的 API
不同,这个 API 指的就是操作系统的 API,Linux 中的 API 被称为系统调用
,是通过 int 0x80
这个软中断实现的。
而 Windows 中的 API 是放在动态链接库文件中的,也就是 Windows 开发人员所说的 DLL
,这是一个库,里面包含代码和数据。Linux 中的可执行程序获得系统资源的方法和 Windows 不一样,所以显然是不能在 Windows 中运行的。
4.什么是用户态和内核态?
出于对系统底层安全考虑划分,普通用户应用操作底层得来回切换
用户态态cpu可以操作 — 用户态
只有内核态cpu可以操作 —内核态
详情见 虚拟内存与Linux层级结构