自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

私のBookShelf

主博客https://yingmanwumen.top的部分迁移

  • 博客(36)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 进程调度(一)

进程调度(一)进程调度是影响系统性能和进程响应时间的重要因素传统进程调度主要使用优先级的方法,优先级高的进程先运行。进程调度必须防止进程饿死,即其一直得不到运行Linux进程切换进程切换是操作系统调度的基本功能。主要包括:硬件上下文切换任务状态段切换内核堆栈浮点数寄存器硬件上下文切换主要是寄存器。例如,i386中CR3保存页表的起始地址,若两个进程不共享物理空间,则其必须切换,否则第二个进程会访问到第一个进程的数据。通用寄存器是进程相关的,需要切换。切换主要是通过保存和恢复

2021-03-31 19:22:26 220

原创 进程的创建和结束(二)

进程的创建和结束(二)结束进程的结束程序调用exit()系统调用结束一个进程该调用接收一个退出原因代码,父进程使用wait()系统调用来获取该代码kernel中对应的的系统调用为sys_exit_group它的作用是唤醒一个进程中所有线程,使其执行do_exit基本流程:将信号SIGKILL加入其他线程的信号队列,并唤醒这些线程。它们被唤醒后会调用get_signal_to_deliver,这个调用会调用do_group_exit之后它们开始执行do_exit()来退出,执行exit()

2021-03-30 17:16:50 279

原创 进程的创建和结束(一)

进程的创建和结束(一)Linux中,进程使用**fork和vfork创建它们生成一个父进程的复制品**创建forkfork对应sys_fork,该函数简单调用do_fork函数一个简单的do_fork如下:分配进程号。alloc_pid()复制进程,将父进程的运行环境复制到新的子进程。copy_process(),它做了fork的大部分事情。计算新进程的优先级、调度参数等,将新的进程加入进程调度队列,并设置为可调度的。wake_up_new_task()copy_process()

2021-03-30 09:19:35 110

原创 线程的原理和实现

线程的原理和实现进程是程序的一次执行,同时也是资源分配的基本单位。线程是比进程更小的、能独立运行的基本单位。线程的基本概念线程与进程的区别和联系:进程是资源分配的基本单位。一个进程中的所有线程共享进程的所有资源线程是最小的调度单位。一个进程至少有一个线程。线程的优点线程的创建开销小于进程:共享进程资源,不需要申请新的资源线程的同步开销小于进程:进程有各自的堆栈、堆空间,要同步必须通过内核的进程通信模块;线程共享进程的所有的地址空间线程易于调度:因为共享,线程切换需要保存的现场更少

2021-03-29 11:01:07 499

原创 进程的原理和实现(三)

进程的原理和实现(三)进程的标识进程的唯一标识:进程ID例外:Linux中,每一个逻辑CPU有一个IDLE进程,所有IDLE的ID为1Linux中,一般进程使用task_struct的地址作为唯一标识内核定义宏current指向task_strcut的地址进程描述符在内存中的组织形式在i386架构下,内核为每一个进程分配4096B×2=8192B4096B\times 2 = 8192B4096B×2=8192B的物理页面这两个连续的物理页面按照8192B8192B8192B对齐,内核堆栈从

2021-03-29 10:18:54 198

原创 形式语言与自动机第四课

形式语言与自动机第四课有ϵ\epsilonϵ转换的NFA正则表达式右线性文法、正则集有ϵ\epsilonϵ转换的NFA无输入(空串)也能引起状态的转移有空串的NFA和无空串的NFA的区别,仅仅在于转化函数的不同KaTeX parse error: Undefined control sequence: \set at position 22: …: Q\times(T\cup\̲s̲e̲t̲{\epsilon}\righ…ϵ−closure\epsilon-closureϵ−closur

2021-03-28 17:46:19 240

原创 计算机网络第六课

计算机网络第六课奈式准则未考虑噪声噪声:模拟信号->数字信号转换信道复用技术(续)在单一物理通信线路上,传输若干个独立的信号三种信道复用技术:FDMTDMWDMTDM适用信号:数字信号各路信号使用不同的时间片,在时间上不重叠各路报文按照字符划块,按帧循环发送帧 = 帧起始位 + ∑\sum∑信道字符i在微观上是串行的,从宏观上是并行的若某个信道没有数据,则信道资源将被浪费区别:适用信号不同应用电话系统的数字传输源端(模拟信号)->PCM数字信号-&gt

2021-03-28 15:23:48 27288 3

原创 进程的原理和实现(二)

进程的原理和实现(二)进程控制块进程是操作系统资源分配、调度的单位。它由内核进行管理。在内核中使用一个名为进程控制块(Process Control Block)PCB的数据结构进行管理。进程由进程控制块、代码、数据组成。进程控制块描述的内容主要有:进程标识符进程上下文进程调度信息进程控制信息进程控制块组织方式进程标识符用于标识一个进程,包括id、名字、拥有该进程的用户标识等。进程上下文指进程运行时的CPU各寄存器的内容进程调度信息包括进程状态、调度策略、优先

2021-03-28 09:22:44 146

原创 进程的原理和实现(一)

进程的原理和实现(一)一切串行执行的程序都具有:顺序执行资源独占结果无关由于作业之间具有一定的独立性,相互之间的依赖性较小,一定程度上可以实现并性处理,因此出现了多任务处理。计算机中,总存在一些相对独立又能并发执行的程序段。这些程序段在同一个时间内可以被多个作业调用,因此,程序和“计算”就不具备“一一对应”的关系。这些并发的程序,组成了一个并发环境。在多道程序的环境下,程序不能独立运行作为资源分配和独立运行的基本单位是进程,操作系统的所有特征都是通过进程体现的进程是操作系统中的可执行

2021-03-27 16:19:47 231 1

原创 Linux内核的结构及主要组成部分

Linux内核的结构及主要组成部分Linux内核系统体系结构Linux内核主要五个子系统组成:进程调度内存管理虚拟文件系统网络接口进程间通信进程调度(SCHED)控制进程对CPU的访问由进程调度系统选择最值得运行的进程内存管理(MM)允许多个进程安全的共享主内存区域。支持虚拟内存。虚拟文件系统(VFS)隐藏了各种硬件的具体细节,为所有的设备提供了一个统一的接口分为逻辑文件系统和设备驱动程序。网络接口(NET)提供对各种网络标准的存取和各种网络硬件的支持

2021-03-26 19:53:30 407

原创 操作系统的内核体系结构模型

操作系统的内核体系结构模型操作系统是一个大型软件操作系统的结构,指的是操作系统个部分程序的存在方式以及相互关系模块接口结构:程序模块方式存在,相互之间通过调用建立联系进程结构:各程序以进程的方式存在,相互之间通过通信建立练习模块层次结构:按照模块的调用顺序或主进程的信息发送顺序把模块进程分层、各层之间只能单向以来常见的操作系统体系结构有:整体式层次式微内核(客户/服务器)……整体式先确定总体功能,再将总功能分解为若干个子功能,直至每个模块仅包含单一功能或紧密联系的小功能位置

2021-03-25 15:23:06 683

原创 操作系统的发展历史与分类

操作系统的发展历史与分类操作历史的发展历史手工操作阶段->监控程序阶段->多道批处理阶段->分时/实时系统阶段->UNIX系统->PC->分布式、集群、嵌入式手工操作阶段最开始的时候,没有高级语言,甚至连汇编语言也没有,程序员把机器语言在卡片上打孔,然后交给计算机进行处理。这个时候的程序员兼职计算机的操作员。监控程序后来出现了汇编语言以及一系列的初级的高级语言,这个时候程序员需要把打孔的卡片放在盒子里交给操作员,操作员带入输入室,计算机将输出的结果输出

2021-03-25 12:53:24 639

原创 什么是操作系统?操作系统的定义、功能、特性

什么是操作系统?操作系统的定义、功能、特性什么是操作系统?首先,计算机的资源可以分为硬件资源和软件资源。CPU、存储设备、各种类型的输入输出设备与外设等,共同构成计算机的硬件资源各种程序、数据构成链计算机的软件资源任何程序的执行都占用了计算机资源。一个程序要执行,首先要从外存加载到内存,再通过CPU进行执行,可能还会调用公共服务子程序和共享文件以及其他外设,这些都是计算机资源各个程序对计算机资源的需求可能会造成冲突。如果没有规则或者程序对这些需求进行管理,势必会引起混乱。同时,对计算机资源进

2021-03-24 09:25:14 5194 1

原创 C++学习笔记十二

C++学习笔记十二pair的使用头文件:utility创建:pair<T1, T2> p1;pair<T1, T2> p2(v1, v2);pair<T1, T2> p3 = p2;p1 = make_pair(v3, v4);操作:// 赋值p3 = p1;// 访问元素p1.firstp1.second// 使用tie获取std::tie(v1, v2) = p1;staticstatic变量static变量只会被初始化一次因

2021-03-23 14:27:29 92

原创 多核编程实践——识别并行机会(二)

识别并行机会(二)虚拟化通过在最高层次上实现并行机制,提供了利用多核或者多处理器系统的方式对于软件开发人员来说,如何利用多个核心增加单个应用程序的吞吐量或者速度是一个问题。采用并行机制提高单个任务的性能并行可以完成更多的工作,这里的工作可能是独立的任务,更多的交流是必须的,访问资源也是一个问题并行影响算法的选择有的算法适合并行,其他则不适合有时候,我们虽然增加了线程数,但是并不能保证性能提升。例如快排算法,使用多个线程对多个部分进行排序,虽然对每个部分同时进行排序看起来能提升其时间,但是,将其

2021-03-22 17:24:38 127

原创 C++学习笔记十一

C++学习笔记十一lambda函数lambda函数的作用:作为回调函数的值,减少不必要的封装lambda通过创建一个小类来实现,一个lambda函数就是该类的一个实例。函数对象能维护状态,但是开销大;函数指针开销小,但是没有办法保存状态基本语法:[capture](parameters)mutable exception->return-type {body}capture:[]:不截取任何变量[&]:截取外部作用域内的所有变量并作为引用使用[=]:截取外部作用域

2021-03-22 16:28:32 74

原创 形式语言与自动机第三课

形式语言与自动机第三课本章节主要内容:确定有限自动机、非确定有限自动机及其等价性右线性文法和有限自动机的等价性右线性文法性质(泵普定理)使用归纳法进行证明确定有限自动机、非确定有限自动机及其等价性状态:将事物区分的一种标识有限状态自动机必定是离散的有限状态自动机具有离散的输入输出(可以没有输入或者输出)状态有限状态+输入->状态转移有限自动机五要素:有限状态集有限符号输入集转移函数一个开始状态一个终态集合DFA->每次转换后的后继

2021-03-22 08:43:49 230

原创 计算机网络第五课

第五课回顾物理层需要解决的三大问题:机械电气时序带宽:衡量介质传输能力新课码元传输速率码元:一个离散信号状态/事件码元传输速率:每秒传输的码元数,单位:波特根据码元编码方式,决定一个码元能代表多少个比特的信息例如4相调制->2比特,8相->3比特奈式准则(重点)理想低通信道的最高码元传输速率:2H BaudH:理想低通信道的带宽,单位:Hz1 Baud:每秒传送一个码元信息传输速率:单位bps信息传输速率bps与码元传输速率Baud在数量上有一定

2021-03-21 21:45:45 324

原创 C++学习笔记十

C++学习笔记十推荐一个github的开源C++学习项目const顺序容器之关系操作符容器大小constconst 类型有类型检查const 类型默认为文件局部变量cont char* a:指向的变量不可修改值,指针值可改变char * const a:指针不可改变值(常指针),指向的变量值可变const char * const a:常指针、常变量常指针必须进行初始化const T &a:引用,不可变,增加函数效率(对对象使用)类中的const几项规则:con

2021-03-17 09:35:24 81

原创 多核编程应用——识别并行机会(一)

识别并行机会(一)使用多进程提高系统工作效率单核系统在多个活动应用程序间切换,给人同时执行多个应用程序的错觉多核系统的优点在于能真正运行多个程序:即使只有一个多核处理器,系统的性能年也会由于可同时执行多个线程而提升,并且无需对现有的程序进行更改多用户系统多用户系统更为常见、强大、昂贵。这些用户可能是人,也可能是其他应用程序。例如*unix系统,支持在多个用户间共享计算资源,每个用户得到计算资源的一部分通过运行多个程序、同一个程序的多个副本、多个用户同时使用来充分利用多栈系统。多用

2021-03-16 07:54:54 141

原创 多核编程应用——高性能编码

主要内容:如何在编写程序的时候谨记性能高性能编码将性能视为应用程序的前期规范性能的定义使用两种指标:单位时间完成项数每秒完成项数算法复杂度算法复杂度不是执行时间的模型,而是执行时间随着输入量变化而变化的模型算法复杂度表示当处理的元素数量增加时,代码段的预期性能,具有最大算法复杂度的代码将决定应用程序的运行时间在进行测试的时候,有时候会出现当只运行100个元素时,低算法复杂度的代码运行时间反而更久的现象。因此,在决定哪一段代码需要优化的时候,选择小工作负荷会产生误导。谨慎使用

2021-03-14 22:16:25 196 2

原创 计网第四课

计网第四课第一章概念总结实体:任何可发送或接受信息的硬件或软件进程协议:控制两个对等实体进行通信的规则的集合上下层之间接口的定义不需要进行规范服务的种类和调用下层向上层提供两种服务:面向连接的服务无连接服务面向连接服务具有连接建立、数据传输、连接释放这三个阶段(电话网络模型)缺点:建立连接后,在连接释放前,信道会一直被占用优点:不会错序无连接服务两个实体之间的通信不需要先建立好连接每个报文都携带了完整的目标地址,因此可以被系统完整地路由(邮政网络服务模型)优点

2021-03-14 12:16:52 104

原创 多核编程应用——硬件、进程、线程(二)

硬件、进程、线程(二)使用缓存处理器从内存中获取一组字节时,数据连同其相邻字节作为一条缓存线提取。缓存线的典型大小为64字节。缓存线总是对齐的。从内存提取的数据存于缓存。通常有指令缓存和数据缓存。缓存的两个明显特性:缓存线大小、缓存大小。其他特性:关联性直接映射缓存:简单缓存中,内存的每条缓存线都会映射到缓存的一个位置。即若缓存大小为4KB,内存中每隔4KB的缓存线都会映射到缓存的同一个位置使用增加缓存关联性的方法解决:让内存中的一条缓存线可以映射到缓存的读个位置。完全关联缓存:内

2021-03-12 14:04:40 141

原创 形式语言与自动机第二课

形式语言与自动机第二课语言以及文法主要内容:形式语言有关术语文法的定义、分类字母表与字符串字母表字母表:字符的有限集合(不允许出现相同的字符)常用TTT、∑\sum∑表示字母表的幂运算归纳定义:T0={ϵ}T^0=\{\epsilon\}T0={ϵ}x∈Tn−1,a∈Tx\in T^{n-1}, a\in Tx∈Tn−1,a∈T=>ax∈Tnax\in T^nax∈TnTnT^nTn的元素只能由1、2生成字母表的∗*∗闭包:T∗=T0∪T1∪T2....

2021-03-11 17:50:04 246

原创 C++学习笔记八

C++学习笔记八虚函数顺序容器迭代器虚函数关键字:virtual#include <iostream>using namespace std;class Parent{public: void func() { cout << "Parent" << endl; }};class Child: public Parent{public: void func() { cout << "child" <

2021-03-11 16:27:31 143

原创 形式语言与自动机第一课

形式语言与自动机第一课先修课程:离散数学,计算机导论,数据结构后续课程:编译原理形式语言与自动机是计算机科学的基础理论之一,是计算机学科的专业基础课计算机科学的主要部分:构成计算机的概念、模型构成计算机的工程技术解决实际问题核心内容:有限状态自动机正规语言正规表达式上下文无关文法上下文无关语言下推自动机图灵机计算问题分类形式语言形式化描述的字母表上的字符串的集合是一种通用语言有一定的描述范围起因:语言学家想使用一套形式化方法来描述语言最初的应用:编译,让机

2021-03-10 19:12:44 391 1

原创 杂谈——继承的研究(一)

继承的研究(一)我已经学到的继承是这么回事:派生类拥有父类的所有变量和方法因为还没有看C++深入理解对象模型或者之类的这种书,我也不想直接查资料,因此准备自己写几行代码进行实验现在我有这几个疑问当父类与子类变量同名的时候,怎么进行区分当父类与子类函数同名的时候,怎么进行处理当父类与子类函数和变量同名的时候,怎么进行处理父类与子类变量同名父类与子类变量同名也分成这几种情况,我将一一进行探讨父类public变量与子类public变量同名父类private变量与子类private变

2021-03-10 15:51:09 87

原创 C++ 学习笔记七

C++ 学习笔记七文件输入输出字符串流文件输入输出使用头文件fstream提供三种IO:ifstream、ofstream、fstreamfstream提供对同一个文件进行读写的功能新的操作:open、close文件流对象的使用定义自己的对象并绑定在需要的文件上两种使用方法:ifstream infile("inFileName");ofstream outfile("outFileName");ifstream infile;ofstream outfile;infil

2021-03-10 14:45:22 95

原创 计网第三课——网络通信过程

计网第三课LAN层次结构设计(续)增加硬件:网卡计算机的物理地址是唯一的计算机的物理地址存在网络接口卡/NIC卡中,称之为介质存取控制地址/MAC地址网卡实现了数据链路层和物理层的功能传输层的三大功能:port流量控制差错控制数据链路层:地址域冲突调节联网能使用相同硬件的方法吗?能使用统一的高级软件方法吗?分层技术有什么好处?局域网中的实际通信过程?WAN的层次结构设计实现多种类型局域网之间的互通问题:尺度:大小不同差别:硬件/软件广播网桥:

2021-03-09 23:27:15 209 2

原创 北邮计网第二课

计网第二课从距离尺度看待网络:局域网城域网广域网局域网尺寸最小拓扑结构BusRing范围传输技术广播式解决一对一私密通信:在packet上增加地址共享竞争:随机数法,token ring提供高数据传输率侧重点:冲突算法,减少冲突城域网拓扑结构总线形(分布式队列双总线)广域网(重点)组成:主机、通信子网(交换节点和传输线路)拓扑结构覆盖范围传输技术点到点分组交换技术交换节点使用的存储转发(分组交换)的方式发送

2021-03-09 15:48:56 212

原创 杂谈——对C++对象的研究

杂谈——对C++对象的研究先看这么一段代码#include <iostream>using namespace std;static int times = 0;class Test{ public: Test(): id(times ++) { cout << "create " << id << endl; } ~Test() { cout << "destroy " <<

2021-03-09 13:41:13 88

原创 北邮计网第一章第一课

计网第一章第一课物理层->数据链路层->网络层->传输层->应用层前面几层最重要计算机网络的基本概念计算机网络的概念、定义与主从式计算机系统、分布式计算机网路的区别概念、定义由自主计算机互联起来的集合体与主从式计算机的区别主从式计算机不是自主的与分布式计算机的特点分布式计算机是基于计算机网络的一层软件计算机网络的组成硬件host通信系统:交换机等接口设备:网卡等传输介质软件通信协议应用软件从硬件的角度去理解网络

2021-03-08 20:17:43 225

原创 建立一个现代Qt窗口应用

建立一个现代Qt窗口应用在这一篇文章中,我们将建立一个现代窗口应用,它包括菜单状态栏工具栏可编辑的文本区域建立我们使用QMainWindow来建立程序QMainWindow与QWidge的区别QMainWindow只能作为顶层窗口使用,QWidge既可以作为顶层窗口、也可以嵌入到别的部件里QMainWindow已经有了自己的布局,不能再设置布局,QWidge没有布局继承自QWidget的类没有办法创建菜单栏等不用勾选Generate form,我们使用纯代码进行构建既

2021-03-06 18:36:45 193

原创 C++学习笔记六

C++学习笔记六标准库的栈、队列、双向队列IO库的条件状态输出缓冲区的管理栈、队列、双向队列栈使用的头文件:#include<stack>是一个容器使用的方法:empty(),判断是否为空size(),返回元素个数top(),返回栈顶元素,不删除pop(),删除栈顶元素,不返回push(),压入栈顶标准库的栈是基于数组的队列和栈类似。使用头文件:#include<queue>双向队列优化了的双向队列,向两端插入删除开销小,支持[]操作符,但

2021-03-05 22:42:36 64

原创 使用Git进行团队协作

使用Git进行团队协作使用Git从Remote拉取代码有这几种形式:HTTPSSHZIP下载其中HTTP方式拉取的代码在每次上传的时候都需要输入帐号密码,并不好使用SSH方式拉取的代码不需要输入帐号密码,很好如何获取SSH密钥?参考链接打开~/.ssh进行查看~/.ssh$ lsknown_hosts known_hosts.old使用ssh-keygen -t rsa命令会有这几个提示:Enter file in which to save the key (/home

2021-03-04 20:53:18 285 2

原创 Cpp学习笔记五

Cpp学习笔记五反向迭代重载函数函数指针面向对象的标准库反向迭代:rbegin, rend反转一个字符串的几种方法:原地反转,reverse(s.begin(), s.end())赋值,s2.assign(s.rbegin(), s.rend())重载函数同一个作用域的两个函数,名字相同、形参表不同,称之为重载函数重载函数和重复声明的区别:主要是形参表不同形参和const形参在使用非引用形参时并无不同,在使用引用形参或者指针时,有所区别不要过度使用重载功能在C++中,名

2021-03-03 20:31:46 126 1

piecetable.zip

piecetable 数据结构的C语言简单实现

2021-01-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除