计算机基础
计算机基础课程枯燥乏味,无聊至极,觉得过于理论,没有用途。上课都睡一大片。就算在听课的大部分也是右耳进左耳出。但是!但是!计算机基础在未来工作中是必不可少的,只要是做计算机编程工作的都必须打好计算机基础知识的根基。所以!所以!所以逃不掉,那就直面风暴吧。我在B站里发现一位up主叫@不秃头的程序员_,感觉内容还不错,然后就总结出来的这篇干货,希望对你有受益。卷起来!卷起来!
操作系统篇
1.什么是操作系统
现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入输出设备构成。然而,程序员不会直接和这些硬件打交道,在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为操作系统,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。(说白了就是能直接与硬件打交道而让用户能方便使用电脑的一种软件 )
我们一般常见的操作系统主要有Windows、Linux、FreeBSD或OsX,这种带有图形界面的操作系统被称为图形用户界面(Graphical User Interface,GUI),而基于文本、命令行的通常称为Shel1。
操作系统简化图如上,最下面的是硬件,在硬件之上是软件。驱动是从操作系统中细化出来的,操作系统通过驱动和硬件进行交互。大部分计算机有两种运行模式:
内核态(也称为管态和核心态)和用户态,操作系统运行在内核态中,具有硬件的访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下。
2.操作系统结构
Windows和Linux可以说是我们比较常见的两款操作系统的。Windows基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入Windows的开发团队中。对于服务器使用的操作系统基本上都是Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。这两个操作系统各有千秋,不分伯仲。操作系统核心的东西就是内核
内核
计算机是由各种外部硬件设备组成的,比如内存、CPU、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了。所以,这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。
内核能力:
现代操作系统,内核一般会提供4个基本能力:
●管理进程、线程,决定哪个进程、线程使用CPU,也就是进程调度的能力;
(PS:进程一般指各个打开的应用,而线程是指打开应用里面的各个页面,如Google浏览器运行是一个进程,而Google浏览器里的各个页面则是线程)
●管理内存,决定内存的分配和回收,也就是内存管理的能力;
●管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
●提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。
内核具有很高的权限,可以控制CPU、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:
●内核空间,这个内存空间只有内核程序可以访问;
●用户空间,这个内存空间专门给应用程序使用;
用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。
因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使用内核空间时,程序则在内核态执行。
应用程序如果需要进入内核空间,就需要通过「系统调用」,下面来看看系统调用的过程:
内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后,CPU会中断当前在执行的用户程序,转而跳转到中断
处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把CPU执行权限交回给用户程序,回到用户态继续工作。
Liux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。
当今Windows7、Windows10使用的内核叫Nindows NT,NT全称叫New Technology。
(PS:这里大家需要知道一点就是Liux和window的执行文件不一样,因为他们的内核、机制不一样。)
加油ヾ(◍°∇°◍)ノ゙ 加油ヾ(◍°∇°◍)ノ゙
3.计算机的启动
主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片。在主板上,有一个东西叫ROM (Read Only Memory,只读存储器)。这和咱们平常说的内存RAM (Random Access Memory,随机存取存储器)不同。
咱们平时买的内存条是可读可写的,这样才能保存计算结果。而ROM是只读的,上面早就固化了一-些初始化的程序, 也就是BIOS(Basic Input and Output System,基本输入输出系统)。
如果你自己安装过操作系统,刚启动的时候,按某个组合键,显示器会弹出一个蓝色的界面。能够调整启动顺序的系统,就是我说的BIOS,然后我们就可以先执行它。
然后操作系统会询问BIOS获取配置信息。对于每个设备来说,会检查是否有设备驱动程序。如果没有,则会向用户询问是否需要插入CD-ROM 驱动(由设备制造
商提供)或者从Internet上下载。一旦有了设备驱动程序,操作系统会把它们加载到内核中,然后初始化表,创建所需的后台进程,并启动登录程序或GUI。
4.系统调用
你会发现,一个项目要想顺畅进行,需要用到公司的各种资源,比如说盖个公章、开个证明、申请个会议室.打印个材料等等。这里有个两难的权衡,一方面,资源毕竟是有限的,甚至是涉及机密的,不能由项目组滥职滥用:另方面,就是效率,咱是一个私营企业,保证项目申请资源的时候只跑一次,这样才能比较高效。
为了平衡这一点, 一方面涉及核心权限的资源,还是应该被公司严格把控,审批了才能用;另外一方面,为了提高效率,最好有个统一的办事大厅, 明文列出提供哪些服务,谁需要可以来申请,然后就会有回应。在操作系统中,也有同样的问题,例如多个进程都要往打印机上打印文件,如果随便乱打印进程,就会出现同样一张纸, 第一行是A进程输出的文字,第二行是B进程输出的文字,乱套了。所以,打印机的直接操作是放在操作系统内核里面的,进程不能随便操作。但是操作系统也提供一个办事大厅, 也就是系统调用(System Cl).系统调用也能列出来提供哪些接口可以调用,进程有需要的时候就可以去调用。这其中,立项是办事大厅提供的关键服务之一。同样,任何一个程序要想运行起来,就需要调用系统调用,创建进程。如果一个进程在用户态下运行用户程序,例如从文件中读取数据。那么如果想要把控制权交给操作系统控制,那么必须执行一个异常指令或者 系统调用指令。操作系统紧接着需要参数检查找出所需要的调用进程。
感谢您的阅读,希望您能摄取到知识!加油!冲冲冲!(发现光,追随光,成为光,散发光!)我是程序员耶耶!有缘再见。