操作系统(三)、连续内存分配
操作系统的内存管理:3.1 计算机体系结构及内存分层体系
操作系统的内存层次:
操作系统在内存管理方面需要完成的目标:
抽象: 逻辑地址空间
保护: 独立地址空间(保证多个进程间不会相互干扰)
共享: 访问共同的地址空间(当多个进程需要操作同一块操作地址时,需要共享地址空间)
虚拟化: 由于缓存及寄存器的存储空间有限,当存储大量数据时,就需要使用虚拟空间
操作系统管理内存的不同方法:
程序重定位
分段
分页
虚拟内存
按需分页虚拟内存
操作系统在完成内存管理操作同时还需要高度依赖于硬件
必须知道内存架构
MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求
3.2 地址空间及地址生成① 地址空间的定义:物理地址空间:物理地址空间是指一些硬件支持的地址空间,比如硬盘和内存条、高速缓存…..
逻辑地址空间:逻辑地址空间是指一个运行程序所拥有的内存范围,它的结构很简单,就是一条线性的地址空间
==但是最终逻辑地址空间还是会指向物理地址空间,操作系统需要协调这二者的关系,通过映射来使得逻辑地址指向物理地址。==
② 逻辑地址的生成: ...
操作系统(二)、操作系统基础操作
1. 操作系统的启动 异常和中断启动:OS的启动加载是通过一步步来执行实现的,主要涉及到 BIOS(基本I/O处理系统,检查外设硬件能否正常工作)、DISK(存放OS)、Bootloader(加载OS,能够让OS从硬盘加载到内存中去).
通电之后BIOS就会从一个特定的地址开始执行(CS:IP = 0xf0000:fff0 CS是段寄存器,IP是指令寄存器) ;
然后接下来会完成一系列操作,包括 加电自检(POST) ,自检是指检查一些硬件外设设备能否正常工作; 在自检完成后就会将bootloader从硬盘上加载进内存中去(bootloader的位置往往位于硬盘的第一个扇区,仅仅只有512个字节);
接下来CPU的控制权就交给了bootloader, bootloader最主要的一个功能就是将 OS 从硬盘上加载进内存,然后CPU的控制权交给OS , 接下来系统的管理就由OS来控制.
系统调用、中断、异常的概念及不同点:
系统调用(来源于应用程序)
应用程序主动向操作系统发出服务请求
异常(来源于不良的应用程序)
非法指令或者其它坏的处理状态( ...
操作系统(一)、概述
https://blog.csdn.net/iwanderu/article/details/103934127
1. 操作系统的功能、概念和目标
2. 操作系统的特征
3、各种操作系统的功能(1)批处理操作系统 [Batch]
主要特点: 脱机、多道、成批处理
脱机是指用户脱机使用计算机,即用户提交作业之后直到获得结果之前几乎不再和计算机打交道。
多道是指多道程序运行,即按多道程序设计的调度原则,从一批后备作业中选取多道作业调入内存并组织它们运行;
成批处理是指操作员把用户提交的作业组织成一批,由操作系统负责每批作业间的自动调度。 批处理系统自动化程度比较高,系统吞吐量大,资源利用率高,系统开销小,但各作业周转时间长,不提供用户与系统的交互手段,适合大的成熟的作业。
(2)交互式系统 [Interactive]
主要特点:
1. 由许多短交易组成,下一次交易的结果可能不可预知;
2. 需要响应时间短;
(3)分时系统[Time sharing]
主要特点:多路性、交互性、独占性、及时性
多路性是指一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本同 ...
操作系统(七)、进程和线程
进程管理:1、进程(PROCESS)管理1.1 进程的定义:
进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
1.2 进程的组成:
一个进程应该包括:
程序的代码;
程序处理的数据;
程序计数器中的值,指示下一条将要运行的指令;
一组通用的寄存器的当前值,堆,栈
一组系统资源(如打开的文件)
总之,进程包含了正在运行的一个程序的所有状态信息
1.3 进程与程序的联系:
程序是产生进程的基础;
程序的每次运行构成不同的进程;
进程是程序功能的体现;
通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包含多个程序;
程序 = 算法 + 数据结构
1.4 进程与程序的区别:
进程是动态的,程序是静止的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态;
进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可以长久保存;
进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(进程状态信息);
1.5 进程与程序的关系实例类比:
1.6 进程的特点:
动态性:可以动态地创建,结束进程(进程切换);
并 ...
操作系统(五)、虚拟内存
虚拟内存:1. 覆盖技术:1.1 目标:* 在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。
1.2 原理:
把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按照时间先后来执行。
必要部分(常用功能) 的代码和数据常驻内存;
可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中,在需要用到时才装入内存;
不存在调用关系的模块不必同时装入内存,从而可以相互覆盖,即这些模块公用一个分区。
1.3 实例:
覆盖方法一:
由于A会调用B、C、D、E、F,那么A就必须作为常驻内存;
当A调用B的时候不会调用C,此时就可以将C存放在硬盘中,A调用完B后返回去调用C,此时会释放B的内存空间,将C从硬盘调入内存;
同理当C调用E时,D和F不会运行,那么可以将D、F放入硬盘。
覆盖方法二:
B、E、F共享一块内存; C、D共享一块内存。
1.4 覆盖技术的缺点:
由人来讲一个大的程序划分为若干个小的功能模块,并确定各个模块之间的覆盖 ...
操作系统(六)、页面置换算法
页面置换算法:1、页面置换算法的功能目标:
1.1 举例:
2、局部页面置换算法:2.1最优页面置换算法:
基本思路:当一个缺页中断发生时,对于保存在内存当中的每一个逻辑页面,计算在它的下一次访问之前,还需要等待多长时间,从中选择等待时间的最长的那个,作为被置换的页面;
这只是一种理想情况,实际中无法实现,因为操作系统无法得知每一个页面需要等待多长时间之后才会被再次访问;
可以用作其它算法的性能评价依据。
例子:
2.2先进先出算法(FIFO):
例子:
2.3最近最久未使用算法(LRU—Least Recently Used):(1)概念:
区别于FIFO算法,FIFO算法替换的是在内存中驻留时间最长的页面,是根据页面驻留时间长短来区分的;
而最近最久未使用算法对应的是页面的访问,是根据最近页面访问来决定的。
(2)例子:
通过栈来实现LRU算法(记录页面的访问次数及顺序):
2.4时钟页面置换算法(Clock):(1) 概念:
时钟页面置换算法需要用到页表中的访问位,当一个页面被装入内存时,设置为0,一旦被访问就设置为1(置1的操作是由硬件来 ...
MySQL、(三) 体系结构与存储引擎
一、Mysql体系结构概览整个 MYSQL Server由以下组成:
Connection Pool: 连接池组件,接收请求后开启一个线程进行相关的认证授权操作后,再进行相关请求的处理;
Management Service & Utilities:管理工具和服务组件;主要进行数据的备份与恢复。
SQL Interface:SQL组件接口;主要进行相关的DML语句、DDL语句、存储过程、视图、触发器等封装。
Parser:查询分析器组件;主要进行SQL语句的解析。
Optimizer:优化器组件;主要进行SQL语句的优化处理。
Caches & Buffers:缓冲池组件;查询缓存中是否有对应的数据,存在的话直接返回即可。
Pluggable Storage Engines:存储引擎。负责MySQL中数据的存储和提取。
File System:文件系统 。将数据存储到文件系统之上,并完成与存储引擎的交互。
四层结构:MySQL与其它数据库相比,主要差异体现在它的存储引擎上,插件式的存储引擎架构,将查询处理和其它系统任务以及数据的存储提取和分离。这种架构可以根据实 ...
MySQL、(二) 索引
一、索引概述
索引定义: 索引(index) 是帮助MYSQL高效获取数据的数据结构(有序),索引目的在于提高查找效率,类比于字典,可以简单理解为排好序的数据结构的快速查找。在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
二、索引的优势劣势
优势
提高数据检索的效率,降低数据库的IO成本;
降低数据排序的成本,降低CPU的消耗;
劣势
三、索引结构
BTREE索引
BTREE 结构(以m叉为例):实例:BTREE树 和二叉树相比,查询数据的效率更高,因为对于相同的数据量来说,BTREE的层级结构比二叉树小,因此搜索速度更快。
B+ TREE索引1.结构介绍
由于B+ 树的所有信息都保存在叶子节点上,因此查询任何key都要从root 走到叶子,保证了查询的稳定性。
2. Mysql中的B+ 树Mysql在原 B+ Tree的基础上进行了优化,增加了一个指向相邻叶子结点的链表指针。这样当需要访问某个范围内的数据时就能够通过链表提高访问区间访问性能。
四、 ...
JVM、(三)垃圾回收机制
一、如何判断对象可以回收1. 引用计数法每引用一次,就计数一次,当某个对象的引用计数为0时进行回收。弊端:循环引用的两个对象永远得不到回收。
2. 可达性分析算法扫描堆中的对象,看能否沿着 GC Root 对象为起点的引用链找到该对象,找不到表示可以回收。
3. 四种引用
强引用
软引用
弱引用
虚引用
终结器引用
MySQL、(一) Linux下的基础操作
一、Linux下安装Mysql百度
二、启动Mysql服务1234567service mysql startservice mysql stopservice mysql statusservice mysql restart
三、登录Mysql
mysql 安装完成后会有一个随机密码,并保存在一个密码文件中 :/root/.mysql_secret
登录后修改密码:
5.7版本: set password = password('新密码')8.0版本: alter user 'root'@'%' identified by '123456'3. 远程授权访问: grant all privileges on *.* to 'root' @'%' identified by '新密码';4. 记住需要刷新:flush privileges;若此时仍然不能连接上,则考虑Linux的防火墙。
四、用户权限123456789-- 授权全部权限,除了给别人授权权限, 库 ...