操作系统的基础概念
学习操作系统的铺垫基础知识,是从语言过渡到系统第一关,先搭一下操作系统方面的预备知识:
1、认识冯诺依曼系统
2、操作系统概念与定位,理解"管理"
通过这两个知识的学习作为一个切入点,破开对系统的认知,对系统进行一定的理解。
之前我们学到的只能算是linux操作,不是linux系统,主要是为了解决用,写的问题。
现在我们来谈谈真正的操作系统!
一、冯诺依曼体系结构
我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。

截⾄⽬前,我们所认识的计算机,都是由⼀个个的硬件组件组成:
- 输⼊单元:包括键盘, ⿏标,扫描仪, 写板等
- 中央处理器(CPU):含有运算器和控制器等
- 输出单元:显⽰器,打印机等
关于冯诺依曼,必须强调⼏点:
- 这⾥的存储器指的是内存
- 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
- 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。
- ⼀句话,所有设备都只能直接和内存打交道。
二、操作系统(Operator System)
2.1 概念
任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,⽂件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
2.2 设计OS的目的
对下,与硬件交互,管理所有的软硬件资源(手段)
对上,为用户程序(应⽤程序)提供⼀个良好的执⾏环境(目的)
2.3 核心功能
在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的“搞管理”的软件!
操作系统下层:
计算机管理硬件
1. 描述起来,⽤struct结构体
2. 组织起来,⽤链表或其他⾼效的数据结构
2.4 系统调⽤和库函数概念
系统调用:操作系统外壳和内核层应该如何交流!
在开发角度,操作系统对外会表现为⼀个整体,但是会暴露⾃⼰的部分接⼝,供上层开发使⽤,这部分由操作系统提供的接⼝,叫做系统调⽤。
系统调⽤在使⽤上,功能⽐较基础,对⽤⼾的要求相对也⽐较⾼,所以,有⼼的开发者可以对部分系统调⽤进⾏适度封装,从⽽形成库,有了库,就很有利于更上层⽤⼾或者开发者进⾏⼆次开发。
操作系统上层:
承上启下
那在还没有学习进程之前,就问⼤家,操作系统是怎么管理进⾏进程管理的呢?很简单,先把进程描述起来,再把进程组织起来!