CPU虚拟化
前言本章中的 CPU 虚拟化指的是将单个操作系统(Operating System,OS)中将物理 CPU 虚拟化成多个供多个进程共享一个物理 CPU,实际上讲的是进程管理,并不是指现代广义上的通过虚拟机监控器(Hypervisor)将物理 CPU(physical CPU,pCPU)虚拟化成多个虚拟 CPU(virtual vCPU),分配给多个虚拟机(Virtual Machine,VM),每个 VM 中再运行一个独立的 OS,这种也是当今云计算中应用十分广泛的技术。
进程进程(process)是操作系统提供的一种基本的抽象,进程其实就是正在运行的程序。程序本身是没有生命周期的,它只是存在磁盘上的一些指令和一些静态数据,操作系统让这些字节运行起来发挥作用。进程由以下几部分构成,这些都是程序在运行时可以读取或者更新机器的部分:
内存,程序的指令和读取或者更新的数据都在内存中,也就是进程可以访问的内存即地址空间(address space)
寄存器,程序读取或者更新的寄存器,比如程序计数器(Program Counter,PC)、指令指针(Instruction Pointer,IP ...
操作系统介绍
前言操作系统中使用到的三个关键的概念是:
虚拟化(virtualization)
并发(concurrency)
持久性(peristence)
虚拟化虚拟化技术是一种通用的技术,操作系统将物理资源(CPU、内存和硬盘)转换成更加通用、更强大且更易于使用的虚拟形式,所以有的时候操作系统也被称为虚拟机(virtual machine)。操作系统提供了一系列的接口(API,Application Programming Interface),供应用程序调用来使用系统的资源,也就是系统调用(system call)。最后,虚拟化技术让许多程序同时运行(从而共享 CPU)、让许多程序可以同时访问自己的指令和数据(从而共享内存)、让许多程序可以访问设备(从而共享磁盘等),所以操作系统扮演的角色就是资源管理器(resource manager),将系统内的资源如 CPU、内存和硬盘,公平高效或者以实现某种目的的分配好。本书中的所有虚拟化都是狭义、基础的一种,指的都是对于单个 OS 中如何将物理资源虚拟化后供进程使用,并不是现代广义上的虚拟化,这里是 IBM关于虚拟化的文章,这里的虚拟化指的是将 ...
操作系统导论
前言本系列是为了记录一下自己在学习《操作系统导论》这本书时的一些心得和重点。操作系统是计算机系统的核心,是软硬件之间的桥梁,学习操作系统不仅仅是学习如何使用、构建一个操作系统,也是学习计算机科学思想,学习完后就会发现自己看到问题的角度更底层、更全面了。
相关文章操作系统文章导航 🌏操作系统导论操作系统介绍CPU虚拟化
后端开发基础(五)- git
详细见文章
前端开发基础(五)- git
详细见文章
前端开发基础(六)- git
详细见文章
后端开发基础(四)- SQL
简介SQL(Structured Query Language),结构化查询语言,用于在关系数据库数据库中存储和处理信息。关系数据库以表格形式存储信息,行和列分别表示不同的数据属性和数据值之间的各种关系。
分类SQL 命令可以进行如下分类
DQL(Data Query Language,数据查询语言)数据查询语言 (DQL) 由用于检索存储在关系数据库中的数据的指令组成。软件应用程序使用 SELECT 命令从 SQL 表中筛选并返回特定结果。
DML(Data Manipulation Language,数据操作语言)数据操作语言 (DML) 语句用于在关系数据库中写入新信息或修改现有记录。例如,应用程序使用 INSERT 命令在数据库中存储新记录。
DDL(Data DefINition Language,数据定义语言)数据定义语言 (DDL) 是指设计数据库结构的 SQL 命令。数据库工程师使用 DDL 根据业务需求创建和修改数据库对象。例如,数据库工程师可以使用 CREATE 命令创建数据库对象,如表、视图和索引。
TCL(Transaction Control Language ...
前端开发基础(五)- typescript
前端开发导航 🌏前端开发基础(一)- 学习路线前端开发基础(二)- html前端开发基础(三)- css前端开发基础(四)- javascript前端开发基础(五)- typescript前端开发基础(六)- git
TypeScript 简介TypeScript 是 JavaScript 的超集,添加了静态类型定义和其他高级特性。它由微软开发和维护,旨在提高大型应用程序的开发效率和代码质量。TypeScript 代码最终会被编译成纯 JavaScript,因此可以在任何支持 JavaScript 的平台上运行。
TypeScript 基本结构一个简单的 TypeScript 文件示例:
123456789101112131415161718192021// 定义类型interface User { name: string; age: number; isActive: boolean;}// 使用类型function greetUser(user: User): string { return `你好,${user.name ...
前端开发基础(四)- javascript
前端开发导航 🌏前端开发基础(一)- 学习路线前端开发基础(二)- html前端开发基础(三)- css前端开发基础(四)- javascript前端开发基础(五)- typescript前端开发基础(六)- git
JavaScript 简介JavaScript(JS)是一种具有函数优先特性的轻量级、解释型或者说即时编译型的编程语言。在 Web 网页中,JavaScript 代码可以修改 HTML 内容、样式和结构,响应用户操作,以及与服务器进行交互。除此之外,JavaScript 还被应用到了很多非浏览器环境中,例如 Node.js。进一步说,JavaScript 是一种基于原型、多范式、单线程的动态语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
JavaScript 基础变量和数据类型JavaScript 中有三种声明变量的方式:var、let 和 const。
变量声明1234567891011121314151617// var - 函数作用域,可重复声明,可修改var name = "JavaScript";var name = &qu ...
计算机系统漫游
计算机体系结构中的伟大思想
使用抽象简化设计隐层底层细节以提供给高层一个更简单的模型
加速经常性事件优化经常性事件远比优化罕见情形能够更好地提高性能
通过并行提高性能通过同时执行多个任务来提高性能
通过流水线提高性能通过将指令分解成多个阶段,并运行多条指令同时在不同阶段上执行来提高性能
通过预测提高性能假设从预测错误中恢复的代价并不高,且大多数时候预测相对准确,那么预测并开始工作要比明确结果后在执行要快
存储层次设计存储层次的目的是在性能、成本和容量之间找到平衡,使系统既能够快速访问数据,又具有足够的存储空间
通过冗余提高可靠性通过引入冗余组件来使得系统可靠
这些思想将会在后续中应用与体现。
程序表层之下计算机的硬件只能执行极其简单的低级指令,从复杂的应用程序到原始的指令涉及若干软件层次来将高层次操作解释或翻译成简单的计算机指令,这些软件层次结果为以下三层:
应用软件
系统软件
硬件
应用软件运行在系统软件之上,系统软件运行在硬件之上。
系统软件有很多种,其中对于现代计算机系统来说是必须的:操作系统和编译器。操作系统(operating system)是用户程序和硬件之间的接口, ...