大部分教程知识点记录于慕课网的视频教程。
Core
:核心,既CPU的内核,cpu中间的核心芯片,单晶硅制成。cpu可分为单核和多核cpu。 每一个核都是独立的运算单元,可以完成独立的计算,接收指令,处理数据等。cpu核数和性能的关系是呈 线性增长的
。赫兹(HZ)
:代表cpu的频率。cpu是以高低电平的转换来工作的,听过一个频率的概念,来表示cpu的性能。例如 2GHZ表示,每秒进行高低电平切换20亿次。程序实际上就是串行的一系列有序的指令。
程序计数器
:主要用来存储下一套指令的运算地址。cpu运行时,就是不断在程序计数器中取出指令,并执行。出现层次性结构的原因:
局部性原理。 是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。就是2-8定律,20的存储区域,将会占用CPU访问的80%的时间。Cache(缓存),解决主存速度不足的问题
。一和二是 B站上的网课学习内容笔记。可以直接跳到三。
每一层向上层提供服务,又隐藏自己,就好像直接是 网络层到网络层传输,忽视下层
。 操作系统,我们在操作系统的平台上开发,也是使用操作系统的提供接口,但不在乎这些接口,只管自己这层对软件的开发,下层是透明的。模式
:简单地说,就是程序运行过程中使用的,由硬件体系结构提供的CPU特权模式。用户态,内核态:
用户使用 用户模式(核外子系统),调用核心子系统,但是 核心子系统,不会去调用你写的程序。管理方式:
驱动,比方说使用网卡等,都需要安装驱动,是一种贴近硬件的一种程序,是集成在操作系统内部的,内核态中的。开发人员编写程序,一般都是在操作系统之上进行编程的,使用的计算机资源,都是经过操作系统抽象出来的。
IO设备管理软件,虚拟设备
。开发者再使用IO设备的时候,写的其实是虚拟的设备,实际的设备是由驱动去完成的,接口是由驱动或者是操作系统提供给我们的。文件管理软件(也称为文件系统)
:读或者写一个文件的时候,我们不需要知道文件的具体位置,操作系统会提供给我们一个接口,和一个文件的句柄
(可以称之为虚拟的文件)。在程序里只需要对这个虚拟的文件进行读或者写,在硬件的层面,就会自懂的帮我们完成硬件的保存和读取。从程序开发者的角度。这些硬件资源都被操作系统所抽象出来了
,实现了对计算机资源的抽象,我们实际上操作的都是对计算机资源的一个抽象,并不是实际的操作底层的硬件。操作系统提供了 系统调用,命令行,图形窗口三种形式的接口调用。
系统调动
: 是比较专业的接口,需要有一定的开发基础。比如平时的创建进程(pthread),打开文件,网络发送(socket),都是系统调用。使用操作系统给开发人员提供的接口。由来:
内核空间:存放的是内核代码和数据
进程执行操作系统内核的代码
cpu可以访问内存所有数据,包括外围设备
支撑功能
资源管理能功能
用户空间: 存放的是用户程序的代码和数据
进程在执行用户自己的代码(非系统调用之类的函数)
CPU只可以访问有限的内存,不允许访问外设。
用户态切换到内核态的三种方法
:系统调用,异常中断,外围设备的中断。
外围设备的中断:一般是指磁盘,网卡,键盘等。**举例说明:**例如cpu需要读取磁盘上的数据, cpu和磁盘的速度差别很大,发出读写信号后,cpu是不可能去等磁盘读取数据完成的,这是就会出现一个叫做DMA的设备
,出现在两者之间。cpu在发送了读取信号后就去干别的事情了,等到dma设备读取完成后,发送中断信号,这是CPU才会从用户态切换到内核态来处理DMA的数据。
并发:是指具有同时处理多个任务的能力。
(同一时间间隔发生)并行:是指真正可以在同一时间,处理多个任务的能力。
(同一时间发生)既有并行,也有并发,一般通常叫做并发系统。
四核之间任务并行执行,每个核里又是很多任务并发执行!
同步和异步,强调的是消息通信机制!
目的
:多道程序环境下,使程序能够并发执行。隔离资源,运行环境,提升资源利用率。进程是系统进行资源分配和调度的基本单位。
进程的状态转换
,请参考上面二的介绍。PCB(进程控制数据块)
:属于操作系统内核的一种数据结构,用来描述和控制进程运行的通用数据结构。包括:进程标识符(用户程序起的进程名字),内部标识符(进程号),处理机状态,进程调度信息,进程控制信息等
非抢占式调度, 当前进程主动方放弃CPU
抢占式调度: 当前进程被动放弃CPU,允许终端当前执行的进程(进程拥有优先级)
切换成本低,与内核线程之间是多对一的。由用户自行调度,内核无法干涉。
内核线程阻塞,所有线程无法运行
组合方式线程
:管理工作既发生在内核态也发生在用户态。多对多
,不会因为内核线程的阻塞,导致所有用户态线程不能执行。
C/C++语言:使用原生的操作系统线程
java和上面的一样,用户态,内核态1对1.
javascript:主要运行在浏览器的,单线程语言。 可以通过async等关键字实现用户态的线程,一对多
go语言: 典型的组合方式,线程调度模型:G-P-M
。G代表协程,用户级线程,M内核级线程,P就是G和M之间的调度对象,用来调节G 和 M之间的关系。
python: 组合方式的实现方式
什么是上下文
:cpu切换执行任务时,需要得到的信息。 就两个人聊天,突然加进来另外一个人,他中途到来,不知道我们上文说了什么,所以也听不懂我们后面要说啥。ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...