概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。简单来说,操作系统就是一款进行软硬件资源管理的软件。
操作系统包括:
1.内核(进程管理,内存管理,文件管理,驱动管理)
2.其他程序(例如函数库,shell程序等等)
设计操作系统的目的
- 与硬件进行交互,管理所有的软硬件资源。
- 为用户程序(应用程序)提供一个良好的执行环境。
操作系统如何管理与被管理
对于计算机底层的硬件,肯定有一个软件来对这些硬件进行管理;eg:内存什么时候读取数据?什么时候刷新缓存区…这些都由软件来管理,而这个软件就是操作系统。
但是操作系统肯定不能直接和底层硬件交互,eg:如果操作系统自己来完成键盘的读取操作,你的键盘读取方式改变了,操作系统那边就需要重新编译,这对操作系统的维护成本太高了。
所以我们在之间加了一层驱动程序,驱动程序可以单独去控制底层硬件。eg:键盘有键盘驱动,网卡有网卡驱动…。驱动简单来讲就是去访问这个硬件,去访问硬件的读,写,状态…。
从图中我们也可以看出操作系统主要进行四项管理:
- 内存管理:内存分配,内存共享,内存保护…。
- 驱动管理:对计算机设备驱动程序的分类,更新,删除等操作。
- 文件管理:文件存储空间的管理,目录管理,文件操作管理以及文件保护…。
- 进程管理:对进程的调度。
而操作系统再往上,就是我们使用命令行或者图形化界面进行各种操作,这一层被称为用户层。
但操作系统为了保护自己,对上只暴露了一些接口,而不会让用户直接访问操作系统,这一系列接口被称为系统调用接口。
但这些系统调用接口对我们普通用户来说使用成本又太高了,因为要使用系统调用前提条件是你得对系统有一定了解。所以在系统调用接口之上又构建出了一批库,例如libc和libc++。实际上在语言级别上使用的各种库,就是封装了系统调用接口的,我们就是通过调用这些库当中的各种函数(例如printf和scanf)进行各种程序的编写。
管理:先描述,后组织
eg:学校管理学生,校长不了解学生,但是可以进行管理,根据的是数据:基本信息,健康信息,成绩信息等…。
先描述:
后组织:
总结:
计算机管理硬件:
- 描述起来,用struct结构体。
- 组织起来,用链表或者其他高效的数据结构。