03操作系统-操作系统概览和硬件视角(上)

03操作系统-操作系统概览和硬件视角(上)

前言

今天开始咱们408第三本书《操作系统》的知识分享。本门课更加注重操作系统原理上的讲解,更关注会遇到什么样的问题,各种解决方案是什么。所以总的讲解方式主要是遇到问题,抽象出问题,怎么解决问题。所以会比408中的操作系统多一点点。

1.什么是操作系统

计算机都是由硬件构成的,用户不可能直接操作硬件吧,因为用户也不懂所以需要写一个驱动(软件)来帮助用户使用,但是这里出现了一问题,如果是另一台计算机呢?只能再次写一个驱动/软件,所以可移植性是很差的。

经过这么久的学习,大家应该也有点感觉,我们再加一层抽象,这个抽象来管这些驱动,中间这层向下为这些驱动提供设备驱动框架的接口,向上为了用户的使用,提供用户接口框架。

再经过后来的发展把这些驱动也囊括进去,就是我们的操作系统,当然我这里没有画全,经过后面的学习,我们来一层一层揭开操作系统神秘的面纱。

再后来呢人们不止想用一个软件,想同时用多个软件比如QQ,WX,听歌,就逐渐发展成了下图这样。

所以操作系统不仅管硬件还管软件。所以本门课就是学习操作系统如何来管硬件和软件的。

操作系统Operating System是一组控制和管理计算机硬件和软件资源合理低对各类作业进行调度,方便用户使用计算机的程序集合。

操作系统的核心目标使系统资源的利用率高,系统的吞吐量大。

2.从程序来看OS

平时我们写的hello.c是怎么存放到磁盘的,怎么读的,怎么变成让我们的CPU认识的指令呢?不同CPU能认出这个hello.c吗?多个软件的运行,系统是怎么调度的?内存是如何进行管理的呢?

所以整个操作系统就是讲如何管理CPU,如何管理内存,如何管理磁盘,如何管理IO的这些问题。

3.一些基本硬件

现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成

然而,程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为 操作系统 ,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。

我们一般常见的操作系统主要有 Windows、Linux、FreeBSD 或 OS X ,这种带有图形界面的操作系统被称为 图形用户界面(Graphical User Interface, GUI) ,而基于文本、命令行的通常称为Shell 。下面是我们所要探讨的操作系统的部件。

这是一个操作系统的简化图,最下面的是硬件,这是计算机的基础,包括处理器、内存、磁盘驱动器、网络接口卡以及其他物理设备。硬件是计算机系统的基础,所有的计算和数据存储都在这里进行。在硬件之上是软件。

大部分计算机有两种运行模式: 内核态和用户态 ,软件中最基础的部分是操作系统 ,它运行在内核态 中,内核态也称为管态和核心态 ,它们都是操作系统的运行状态,只不过是不同的叫法而已。操作系统内核负责管理硬件资源,如内存分配、进程调度、设备驱动等,并提供了一组系统调用接口供用户态程序使用。

用户接口程序(shell 或者 GUI) 处于用户态中,是用户与操作系统交互的方式。并且它们位于用户态的最低层,允许用户运行其他程序,例如 Web 浏览器、电子邮件阅读器、音乐播放器等。而且,越靠近用户态的应用程序越容易编写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换一个,但你不能自行写一个操作系统或者是中断处理程序。这个程序由硬件保护,防止外部对其进行修改。

这张图还强调了操作系统所处的位置,它介于硬件和用户之间,起到了管理和协调的作用。用户态的应用程序无法直接访问硬件,必须通过操作系统内核提供的服务来间接访问。这样的设计提高了系统的安全性,避免了恶意软件或错误的程序破坏系统稳定性。同时,这也意味着用户态的应用程序更容易编写和维护,因为它们不需要直接处理底层硬件细节。

由于我在备考,所以后面的内容可能不会像之前那么详尽,我还是要保证自己先学会,因为时间比较紧迫,所以有的需要大幅度的描述的内容没法以笔记形式写出来,为在看我写的知识的同学说一生抱歉。大概先写这些吧,今天的博客就先写到这,谢谢您的观看。

相关推荐
小宇子2B1 天前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B2 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B2 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
小宇子2B7 天前
一个 pthread_mutex_lock() 到底锁了什么——从用户态 CAS 到内核调度
操作系统
小宇子2B8 天前
多线程 malloc 为什么会变慢——glibc 的 arena 到 bins 全景
操作系统
fakerth13 天前
【OpenHarmony】communication_ipc模块
操作系统·openharmony
Coisinier13 天前
RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)
linux·运维·服务器·前端·nginx·操作系统
小宇子2B14 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
触底反弹16 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页16 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统