
操作系统学习笔记
文章平均质量分 93
操作系统相关学习
Charles Ray
现就职于某半导体公司。Software Programmer
展开
-
从汇编看函数调用
ESP/RSP:堆栈指针寄存器,指向栈顶。栈顶指针EBP/RBP:栈底指针,指向栈的底部,通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量rax:通常用于存储函数调用返回值rdi:第一个入参rsi:第二个入参rdx:第三个入参rcx:第四个入参r8:第五个入参r9:第六个入参寄存器ebp作为当前函数的“栈帧”基地址,配合一定的偏移,就可以读、写函数体的临时变量。如果一个变量是通过ebp寄存器间接访问的,那么它往往是临时变量,也叫“栈”变量。原创 2024-04-03 18:02:08 · 1545 阅读 · 0 评论 -
x86架构中的寄存器和常用指令
DI/EDI/RDI:目的索引寄存器,用于字符串操作中的目标地址指定。字符串操作时,用于存放目的地址的,和esi两个经常搭配一起使用,执行字符串的复制等操作。FLAGS/EFLAGS/RFLAGS:标志寄存器,包含了当前状态标志,如零标志、进位标志、溢出标志等。CX/ECX/RCX:计数寄存器,用于字符串操作和循环计数,this指针。通常用于存储函数调用返回值。DX/EDX/RDX:数据寄存器,用于 I/O 操作和一些算术运算。SI/ESI/RSI:源索引寄存器,用于字符串操作中的源地址指定。原创 2024-03-29 11:21:32 · 1829 阅读 · 0 评论 -
浮点数的前世今生
指数可能是正数,也可能是负数,即指数是有符号的整数,而有符号整数的计算是比无符号整数麻烦的,所以为了减少不必要的麻烦,在实际存储指数的时候,需要把指数转换成无符号整数。这和无法用十进制数来表示1/3是一样的道理。但因为在32 bit 的空间中就只有2³² 种可能性,为了把所有浮点数都塞在这个32 bit 的空间里面,许多CPU 厂商发明了各种浮点数的表示方式,但若各家CPU 的格式都不一样也很麻烦,所以最后是以IEEE发布的IEEE 754作为通用的浮点数运算标准,后来的CPU 也都遵循这个标准进行设计。原创 2024-03-10 15:09:56 · 1137 阅读 · 0 评论 -
内存映射IO(MMIO)
种隐藏的接口芯片也不在少数,很多都是我们不能直观看到的。DRAM Controller View就是内存控制器能够控制的内存地址的范围,那顾名思义,内存控制器的这个控制范围主要肯定就是内存的大小范围,在内存还没有增长到今天这个范围的以前,内存控制器能够识别的大小可能只有2G,而今天它能够识别的范围远远超过之前。在早期的CPU中,CPU的位宽为32,而地址线能够达到36根(是的没错,并不是大多数人以为的32位地址线),此时限制physical address space的主要因素就是CPU的位宽了。原创 2024-01-29 16:49:29 · 2231 阅读 · 0 评论 -
pcie基础知识
Switch: 用于拓展PCIE接口,PCIE是串行接口,所以一个PCIE接口只能接一个PCIE设备,想要多接几个PCIE设备就需要用到Switch设备,起到数据转发的作用;RC:root complex, 根桥作为cpu和pcie的媒介,是用于将一个PCIE接口拓展成多个PCIE接口,区别是RC集成在芯片内部,并且还会连接内存;pcie速率很快,pcie接口一般插显卡,也可以插无线网卡,固态硬盘,等其他硬件,以及转换成USB接口。总线标准的演进:ISA总线 -> pci总线(并行) -> pcie。原创 2024-01-29 10:05:14 · 1203 阅读 · 0 评论 -
计算机内部总线概述
地址总线:用于传输指示计算机中的内存或外设的物理地址数据总线: 是CPU与内存或其他器件之间的数据传送的通道。控制总线:管理组件之间的信息流,指示操作是读取还是写入,并确保操作在正确的时间发生。CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。原创 2023-06-25 16:19:09 · 2957 阅读 · 1 评论 -
指令集,ISA, x86,x86_64, AMD64等名词解析
指令集架构(Instruction Set Architecture, ISA)首次出现在IBM的System/360中。作为软硬件之间的接口,ISA在编译器编写者和处理器设计者之间提供了一个抽象层,将编程所需要了解的硬件信息从硬件系统中抽象出来。这样软件开发者就可以面向ISA编程了,开发出来的软件不经过修改就可以在符合该ISA的计算机上运行了。ISA定义了机器语言程序编写者需要知道的一切,这其中就包括指令集,指令集编码,基本数据类型,寄存器,寻址模式,存储体系,异常处理,中断,I/O模型等。原创 2022-12-08 17:32:55 · 2543 阅读 · 0 评论 -
DMA和RDMA概念解析
DMA和RDMA概念一般说来,CPU操作外设时,将外设的数据读到内部寄存器中,再将数据传送至内存中,关键就是最后这一句,为什么CPU还把数据送到内存中呢???因为CPU内部寄存器是很少的,不可能用内部寄存器来存储很多数据,所以都是用RAM来临时存储大量的代码与数据,CPU运行的核心就是一个PC指针,这个PC指针指向什么地址,CPU就会把相应地址处的二进制数据送至内部进行译码运行!!!!所以RAM就是一个临时存储代码与数据的地方,CPU要执行代码时就到内存中去取指令。那些外设上的数据也被临时存储到了内存中,原创 2022-06-14 17:14:19 · 2077 阅读 · 1 评论 -
操作系统常见面试题
文章目录参考资料进程和线程的区别协程与线程的区别进程与线程的切换流程为什么虚拟地址空间切换会比较耗时进程间通信方式线程(进程)间同步方式线程的分类参考资料https://github.com/cosen1024/Java-Interview/blob/main/操作系统/操作系统.md进程和线程的区别基本意义:进程:操作系统分配资源(内存空间等)的基本单位,系统中正在运行的一个应用程序,程序一旦运行就是进程。线程:是进程的一条执行路径(因为不管怎么样都会有一条路径来执行也就是主线程)多线程就是有多条原创 2022-01-17 22:33:57 · 7191 阅读 · 0 评论 -
操作系统 —— (并发)上下文切换
文章目录进程(线程)上下文概念进程控制单元PCB什么是上下文切换进程上下文切换线程上下文切换进程上下文切换和线程上下文切换区别上下文切换问题参考进程(线程)上下文概念每个正在运行的进程,cpu都会他的信息保存在下面三个东西中:一个程序计数器(记录正在执行或者要执行的下一条指令)一组寄存器(保存当前线程的工作变量)堆栈(保存进程一些数据,线程则没有堆的切换)。这些信息就叫上下文寄存器: 是 CPU 内部的数量较少但是速度很快的内存(与之对应的是 CPU 外部相对较慢的 RAM 主内存)。原创 2021-12-14 22:37:37 · 3146 阅读 · 0 评论 -
操作系统 —— (并发)基于事件的并发
数据库,IO,分布式,IO多路复用https://www.zhihu.com/question/32163005https://www.cnblogs.com/Anker/p/3265058.htmlhttps://www.jianshu.com/p/397449cadc9a多路连接服用一个线程。多路复用指:使用一个线程,在一个线程上可以有多路并发传输。使得系统在单线程的情况下。单线程通过记录每个IO流的状态来管理多个IO流信息,可以同时处理多个客户端请求,可以很大的提高吞吐能力。多路是指多个I原创 2021-04-06 17:50:19 · 636 阅读 · 0 评论 -
操作系统 —— (并发)同步、互斥和死锁
锁并发产生的问题及解决并发产生的问题临界区:是多个线程能够访问的共享资源的代码。竞态条件:多个线程同时进入临界区而试图操作共享的数据balance = balance+1;不确定性:由于多线程同时进入临界区而操作的一个共享数据,这就造成了结果的不确定性。使用锁(互斥量)锁:我们想要的是当一个线程操作临界区数据时其他线程不能进入临界区操作该数据,也就是互斥原则,避免出现竞态。我们通过锁来提供互斥进入临界区的线程。如果没有其他线程持有锁,则该线程可以进入临界区。如果一个线程持有锁,则该线程不会原创 2021-12-10 10:57:12 · 3137 阅读 · 0 评论 -
操作系统 —— (并发)进程与线程
文章目录多线程进程和线程的区别什么是线程切换单核CPU设定多个线程是否有意义线程数是不是越大越好工作线程数设多少个合适线程调度算法协程(纤程)fiber并发产生的问题原子性锁(互斥量)线程同步方法死锁多线程进程和线程的区别根本意义:进程:操作系统**分配资源(内存空间等)的基本单位,系统中正在运行的一个应用程序,程序一旦运行就是进程。线程:是进程的一条执行路径(因为不管怎么样都会有一条路径来执行也就是主线程)多线程就是有多条路径执行该进程,操作系统CPU独立调度执行的基本单位。**的基本单位。包含原创 2021-03-17 00:06:24 · 404 阅读 · 0 评论 -
操作系统 —— (进程)进程管理与中断
文章目录操作系统概述多道程序时代宏内核和微内核进程调度(cpu虚拟化)4. 进程5. 进程API6. 受控权限用户模式和内核模式时钟中断保存和恢复上下文进程调度策略进程优先级(类似于lte的mac层调度)进程间通信方式进程的五个状态linux进程类型进程实体:程序分配内存的基本单位进程调度算法进程同步进程与线程进程间的通信的几种方式内存虚拟化2. 虚拟内存定义内存分配API为何我们没有释放内存,一般进程退出时不会内存泄漏虚拟(逻辑)地址转换成物理地址16.分段18.分页21.交换空间22.页交换策略内存管理原创 2021-03-16 17:48:49 · 1437 阅读 · 0 评论 -
进程与线程,并发,并行和串行,同步和异步基本概念
进程,线程,并发和并行,串行,同步,异步概念解析进程和线程一个操作系统运行多个进程,每个应用为一个进程,每个进程可以运行多个线程。这也就是并发编程。操作系统控制进程,开发者控制线程。并发和并行的区别针对某一个应用程序,也即一个进程来定义。并发:一个应用程序如果可以开启多个线程让多个线程同时存在,但是交替执行(比如在单核处理器上)则他称之为并发执行。并行:一个应用程序能并行执行,那...原创 2019-03-22 18:50:39 · 2014 阅读 · 0 评论