啥是操作系统?

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层级结构

 

posted @ 2021-04-20 16:48  六小扛把子  阅读(1081)  评论(0编辑  收藏  举报