1.操作系统是什么?
操作系统是一种软件,是用于连接应用程序和计算机硬件的软件。应用程序通过操作系统的提供的系统调用来与计算机硬件打交道。用户通过操作系统来使用计算机(命令、图形界面、应用程序)。操作系统负责管理计算机硬件资源,如CPU时间片的分配,内存,磁盘,文件和终端。
2.学习操作系统学习什么?
操作系统的启动过程.
计算机通电启动后首先执行BIOS。BIOS会进行硬件检查磁盘,内存,CPU等,如果没有问题则开始将操作系统载入内存。载入后开始执行操作系统的代码。
shell
shell不断等待用户输入命令,接收到命令后进行执行。
系统调用
应用程序如何使用系统调用的。
linux中分为用户态和内核态,内核态即为操作系统的代码和数据。用户态的程序不能访问内核态的代码和数据。需要通过系统调用来访问计算机资源等。系统调用具体通过int 0x80中断的方式进行。
常见的系统调用
从两个方面学习操作系统
一是进程:CPU如何进行进程调度,死锁问题,内存管理
二是文件:IO管理,磁盘管理
操作系统的发展
单道批处理系统->多道批处理系统->分时系统,实时系统
3.多进程图像
操作系统的作用是管理计算机硬件。CPU是一种计算机硬件,所以也需要操作系统来管理。要管理CPU首先要知道CPU是如何工作的。CPU的工作方式是取指执行。
那么最简单的管理CPU方式是直接将PC指向程序的起始位置,CPU开始取指执行,这样CPU就工作起来了。但当遇到IO操作时,CPU需要等待。由于IO操作比CPU运行速度慢几个数量级,导致CPU利用率下降。由此引入并发执行的概念。程序A执行IO操作时,CPU去执行程序2,进行程序切换,取指执行。这里便引入了进程的概念:进程是运行中的程序,在计算机系统用PCB描述。
进程切换
schedule() {
pNew = getNext(ReadyQueue); //选择要运行的进程,涉及“进程调度"算法
switch_to(pCur,pNew); //保存现场:复制cpu到pcbCur;准备运行:复制pNew到cpu
}
内存管理
多个进程同时在内存中执行,如何做到不相互影响数据?
地址空间分离,映射表