操作系统
HIT_KyleChen
行胜于言
展开
-
进程上下文切换与线程上下文切换
进程上下文切换进程上下文包含了进程执行所需要的所有信息。用户地址空间:包括程序代码,数据,用户堆栈等;控制信息:进程描述符,内核栈等;硬件上下文:进程恢复前,必须装入寄存器的数据统称为硬件上下文。进程切换分3步a.切换页目录以使用新的地址空间b.切换内核栈c.切换硬件上下文4、刷新TLB5、系统调度器的代码执行线程上下文切换 对于linux来说,线程和进程的最大...原创 2020-04-06 22:45:33 · 4425 阅读 · 1 评论 -
线程的用户级和内核级
进程的实现只能由操作系统内核来实现,而不存在用户态实现的情况。但是对于线程就不同了,线程的管理者可以是用户也可以是操作系统本身,线程是进程内部的东西,当然存在由进程直接管理线程的可能性。因此线程的实现就应该分为内核态线程实现和用户态线程实现。内核态线程实现: 线程是进程的不同执行序列,也就是说线程是独立运行的基本单位,也是CPU调度的基本单位。那么操作系统是如何实现管理线程的呢? ...原创 2020-04-06 22:15:37 · 475 阅读 · 0 评论 -
协程的理解
1.多线程之间可以并发运行,提高效率,多协程之间也可以并发运行。这样多线程的好处就被继承了过来。2.多线程在访问资源时可能会出现安全问题,需要加锁。多协程则没有这方面的问题,因为它们位于一个线程内,一个线程是不需要加锁的。3.多线程的切换需要操作系统参与且在内核空间完成。多协程的切换在用户空间完成,不需要操作系统干预,因为操作系统压根就不知道协程的存在。4.那多协程该如何切换(也...原创 2020-04-06 21:49:14 · 366 阅读 · 0 评论 -
CPU的工作过程
cpu的组成指令的种类cpu的工作流程cpu的执行实例顺序执行条件分支/循环机制函数调用原创 2020-04-06 21:26:48 · 620 阅读 · 1 评论 -
离散内存分配
文章目录虚拟内存虚拟内存的引入问题方法优点总结虚拟内存的地址空间虚拟地址空间的划分虚拟地址空间的用户态内核态虚拟内存的实现分页式数据结构工作过程分段式引入区别过程段页式引入过程虚拟内存虚拟内存的引入问题就可以避免内存紧缩,减少碎片。同时运行多道程序并发和大程序执行随着发展程序往往大到内存无法容纳而且并发执行时可能剩余空间不支持另外的程序执行如果用交换技术 每次可能会交换几GB内存,...原创 2020-04-06 19:09:41 · 1477 阅读 · 0 评论 -
连续内存分配
文章目录连续内存分配单一连续存储管理引入特点分区连续存储管理特点特性辅助连续内存分配是指为一个程序分配连续的内存空间单一连续存储管理引入早期计算机是没有存储器抽象的 程序直接访问内存在这种情况下 内存分为两个区域 系统区和用户区 ,即单一连续存储管理特点优点是:简单 易于管理缺点是: 只能支持单道程序,内存浪费 且用户程序容易破坏操作系统分区连续存储管理特点创建了程...原创 2020-04-06 16:59:45 · 599 阅读 · 0 评论 -
C++11实现自旋锁
原理自旋锁是什么?互斥锁当想加锁但是锁已经被别的线程占有时,它会阻塞自旋锁当想加锁但是锁已经被别的线程占有时,它会轮询等待自旋锁用在哪?自旋锁主要适用于线程占有锁得时间短的场景,如果用互斥锁要经历从阻塞到唤醒的过程,相对于自旋锁线程一直处理就绪状态轮询等待耗费的时间更多但是如果线程占有锁的时间很长则其他等待持有自旋锁线程就会处于长时间的轮询忙等所以适用于线程占有锁的时间较短的...原创 2020-03-20 11:58:26 · 578 阅读 · 0 评论 -
三张图搞懂线程局部存储TLS技术
原创 2020-02-20 21:56:48 · 316 阅读 · 0 评论 -
(推荐!)三张图彻底搞懂select函数
欢迎交流 QQ 2431173627 微信 ccc17862701790存在问题设计思路工作过程第一步第二步第三步特点分析程序实例存在问题用socket基本的一套api已经可以构建一个简单的tcp服务器了思路就是 加一个while循环 在循环里面服务器程序用socket bind listen accept recv send 一条龙具...原创 2019-09-17 20:29:47 · 1660 阅读 · 1 评论 -
五种IO模型(阻塞 非阻塞 IO多路复用 信号驱动 异步)和两种IO事件处理模式(Reactor Proactor)
欢迎交流 QQ 2431173627 微信 ccc17862701790引入在介绍六种IO模型之前首先需要理解 四个概念:同步 异步 阻塞 非阻塞关于同步 异步 阻塞 非阻塞 在不同上下文讨论时候背景是不同的 这里讨论的背景是linux环境下的networkIO首先一个IO操作其实分成了两个步骤:1.用户进程向内核发起IO请求,等待内核数据准备2.实际的IO操作...原创 2019-09-15 11:50:49 · 1035 阅读 · 0 评论 -
(深入浅出,推荐!)多线程零基础到实战系列2-----写一个简单的多线程并发的抢票程序
引入:在这个系列的第一篇博文中介绍了线程的基本概念这篇文章就立刻投入实战,讲一讲怎么样写一个简单的多线程并发的抢票程序也就是说 用多个线程对临界区数据的抢占来模拟多个人不排队在售票窗口抢票的场景首先我们会介绍和线程相关的api然后用一个小例子介绍这些api的使用方法最后就是讲解这个"抢票程序"目录基本API需要包括的头文件线程创建函数主线程回...原创 2019-09-06 01:01:31 · 947 阅读 · 0 评论 -
(深入浅出,推荐!)多线程零基础到实战系列1-----线程是什么?
欢迎交流 QQ 2431173627 微信 ccc17862701790这是这个系列的第一篇博文笔者将会把个人学习 使用多线程过程中的一些总结理解整理在这一个系列如果有差错 欢迎交流指正!整个线程相关的知识框架 个人的整理如下(可能随着后续的学习会有扩充)今天先讲一讲第一部分 ,线程的基本概念,也就是说 线程到底是个什么东西 目录如下线程的引入线程和进程的比较线程和进...原创 2019-09-03 13:18:47 · 303 阅读 · 0 评论 -
linux共享内存实现
答:共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像...转载 2019-04-19 20:57:58 · 3570 阅读 · 0 评论 -
浅谈linux下的进程,线程的概念与使用
进程进程的概念对于进程的的一个直观的理解可以是:占用内存空间的正在运行着的程序 比如,你下载游戏安装到硬盘里没有玩 那是程序.开始玩了以后,游戏加载到主内存开始运行就可以称为进程,以上是直观理解,进程的准确定义是:进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统资源分配、调度的独立单位。以上把握三个点:(1)独立功能的程序 (2)关于某个数据集合(3)系统资源分配...原创 2019-02-08 23:27:47 · 530 阅读 · 0 评论