什么是操作系统(operator system):
操作系统是一种运行在内核态的软件
操作系统这一套软件放在哪里
磁盘中
计算机的组成:
cpu的组成:
1、寄存器,用来暂存指令数据等处理对象;
2、控制器,把内存上的指令、数据等读入寄存器;
3、运算器,负责运算从内存读入寄存器的数据;
4、时钟,负责发出CPU开始计时的时钟信号。
注意:中央处理器就是处理器,不要提到计算机的处理器又不知道是什么了
操作系统的位置:
那么内核又是什么:
内核是操作系统的核心程序
shell---外壳
像windows,Linux这些系统的界面属于shell(外壳)
操作系统功能:
管理和控制计算机的所有设备
操作系统是怎么工作的:
启动:
设备开机:
点击电源键--->打开设备--->执行BIOS程序(系统)--->检查硬件设备是否能正常工作--->从磁盘加载bootloader程序---->bootloader程序负责加载OS(操作系统)
《BIOS加载bootloader--->bootloader加载OS》
BIOS(Basic Input Output System):基本输入输出系统。它是一组固化到计算机内主板上一个ROM芯片上的程序
作用:BIOS是连接软件与硬件的一座“桥梁”,是计算机的开启后自动运行的第一个程序,主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
(操作系统是软件,那么软件就要有存储的地方,所以操作系统是存储在disk(磁盘/硬盘)中的
而进程的运行不是在硬盘上,而是在内存中运行的,所以当我们的设备启动之后,需要将磁盘中的程序加载到内存中取执行。)
运行:
中断:
产生中断的源头:外设(比如,键盘,鼠标等等)
32位操作系统和64位操作系统(地址总线):
问你个最简单的问题:我们常说的32位系统,64位系统,到底什么区别
32位和64位操作系统是指CPU一次处理数据的能力是32位(4字节)还是64位(8字节),这里涉及到的是处理器运算位数。简单的说32位系统的地址总线是32位的,而64位系统的地址总线是64位的,它们的的地址总线决定了它们的CPU一次可以处理(读出/写入)的数据大小
一个字节8位
四八32
内核态和用户态:
准确的说,应该是:
用户态:CPU在执行应用程序或者用户接口程序时所处的状态。
内核态:CPU在执行操作系统程序时所处的状态。
进程:
什么是进程:
进程就是正在运行的程序,程序一旦运行就是进程
进程是一个动态的概念
系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况。
进程的终止方式:
5种正常终止:
1,main函数执行return返回
2,进程种调用exit()函数
??exit只是终止单个进程
??表示代验证
exit在关闭之前会进行一些处理:
1),exit函数会调用各终止处理程序,
2),然后关闭所有I/O流等
3,进程调用_exit和_Exit
这两个函数与exit的区别就是快速关闭,因为不需要调用各终止处理程序
4,
5,进程的最后一个线程调用pthread_exit()
3种异常终止:
1,调用abort时,这会产生一个SIGABRT的信号
2,当接收到某些信号时。
3,最后一个线程对“取消”请求做出响应时
进程切换:
操作系统对进程之间的切换是以1ms为单位时间片进行进程切换的
由外设时钟定期产生中断来实现进程切换
线程
进程和线程
1,线程只是进程的一个子任务
2,线程才是内核(CPU)调度的对象
3,进程实现操作系统的并发,线程实现一个进程的并发
内存管理:
内存-----RAM,ROM
RAM:随机存储器,断电数据消失
ROM:只读存储器,只能读取数据
内存是指ram。ram一般是指随机存取存储器,也叫主存,是与CPU直接交换数据的内部存储器。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
注意:内存是设备的一个硬件,不要理解为容量单位。
物理内存:
内存条:是存储数据的硬件设备
什么是物理内存:
就是内存条的容量大小
物理内存管理:
分段:
就是把内存分为不同的段供给不同的进程使用(实际供给虚拟内存和物理内存的映射)
内存管理单元(存储管理器)
我们知道内存是由操作系统管理和分配的,但是操作系统中是含有很多模块,那么内存由什么模块管理呢
就是操作系统中的部分称为内存管理单元(memory management unit,MMU)的代码,管理哪一部分内存正在使用,哪一部分空闲,进程需要时为进程分配
虚拟地址
由程序产生的一些数值地址
虚拟内存不是真的内存,只是操作系统分配给数据的一些对应于物理内存的数值而已,当真的需要把数据加载到物理内存运行的时候,才会通过虚拟地址(数值)和物理地址的映射关系把数据加载到物理内存。
分页
MMU会将虚拟地址从
硬盘及其作用:
问你个最简单的问题:我们电脑上安装的软件,下载的音乐,以及操作系统这些东西在电脑的哪个地方存放
硬盘就是用来储存我们平时安装的软件、电影、游戏、音乐等的一个数据的电子容器。在一台电脑中,硬盘的作用仅次于CPU和内存,硬盘是看得见。摸得着的物理硬件
硬盘和内存的区别:
已经有内存了,为什么还需要磁盘
1,硬盘是数据永久保存区,内存只是进程运行时的数据暂存区和进程运行的地址
详细请参考 链接
2,内存容量小,但是运行速度快;硬盘容量大,但是运行速度慢。
虚拟内存:
什么是虚拟内存:
既然是虚拟内存,肯定也是内存(数据暂存和进程运行区)
所谓虚拟内存就是在你的物理内存不够用时把一部分硬盘空间作为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢。个人实际需要的值应该自己多次调整为好。设的太大会差生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。
虚拟内存来自哪里
linux虚拟内存大小:
为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有4GB 互不干涉的虚拟地址空间。
(但是并不是真的一来就实际分配这么多虚拟内存给进程,而是实际用到多大,给多大)
虚拟内存的划分:
4GB 的进程虚拟地址空间被分成两部分:「3/4的用户空间」和「1/4的内核空间」
用户空间:
用户进程能访问的是「用户空间」,每个进程都有自己独立的用户空间,虚拟地址范围从从 0x00000000 至 0xBFFFFFFF 总容量3G 。
用户进程通常只能访问用户空间的虚拟地址,只有在执行内陷操作或系统调用时才能访问内核空间。用户进程能访问的是「用户空间」,每个进程都有自己独立的用户空间,虚拟地址范围从从 0x00000000 至 0xBFFFFFFF 总容量3G 。
进程与虚拟内存:
每一个进程(执行的程序)用户空间的分配:
进程和内核空间的关系:
内核空间是进程所共享的,所以:
进程的内存分配
早期的进程地址分配:既然进程是在内存中运行的,那么当操作系统执行一个进程时,为进程分配的进程地址就是内存中的内存地址,内存中的地址就是物理地址。
现在的进程地址分配:由上面的硬盘和内存的的关系可知,内存的容量小,硬盘容量大,而一个系统运行时几乎不可能只有一个进程在运行,所以内存的容量是不够大量进程分配使用的,所以需要借助硬盘空间容量。而运行的进程是在内存中运行的,所以我们把保留进程信息的硬盘空间称为虚拟内存。当创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟进程地址空间。
这样,进程运行时所需要到的数据就可以通过操作系统进行虚拟地址和物理地址之间的映射,和操作系统的调度机制把数据从虚拟内存加载到物理内存中使用,而用不到的数据依然保留在虚拟内存中。
进程加载数据的方式:
上
当进程运行时,通过虚拟地址和实际物理内存的映射就可以保证进程正常运行。
人们之所以要创建一个虚拟地址空间,目的是为了解决进程地址空间隔离的问题,防止进程之间的相互影响。但程序要想执行,必须运行在真实的内存上,所以,必须在虚拟地址与物理地址间建立一种映射关系。
虚拟内存的来源-- 连接
缓冲区
什么是缓冲区
缓冲区又称缓存,是从内存中开辟的一定大小的存储空间。(缓冲区就是一部分开辟好的内存空间)
用来暂时存储数据
为什么需要缓冲区
快:计算机从缓冲区读写数据的速度快于从磁盘读写。
内核
内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。