![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统基础
文章平均质量分 67
First Snowflakes
捡贝壳
展开
-
GRUB and the Boot Process on UEFI-based x86 Systems
【代码】GRUB and the Boot Process on UEFI-based x86 Systems。原创 2024-02-17 21:47:36 · 1007 阅读 · 0 评论 -
BIOS and UEFI
Notes:1. 两者都是主板上的firmware.2. 两者的作用都包括开机后检查硬件,从硬盘上寻找bootloader(用于加载操作系统,例如GRUB).原创 2024-02-17 21:04:54 · 800 阅读 · 0 评论 -
c++11实现一个线程池子
Task类:对应要执行的任务Task::run, 任务入参Task::mParam.class Task {public: Task(int val=0): mParam(val) { } virtual ~Task() { } void setParam(int val) { mParam = val; } void run() { thread::id threadId = std::this_thread::get_id(); cout <&l..原创 2021-04-16 23:33:36 · 534 阅读 · 1 评论 -
C语言 free() 释放内存的原理
char* pChar = (char*)malloc(100); int* pInt = (int*)malloc(100); //pChar = pChar + 1; //会导致后面的free(pChar)错误! free(pChar); free(pInt);>上面的free(pChar)和free(pInt)释放的都是100byte的空间,与指针类型无关;>free释放的内存大小,是在malloc的时候就确定了的,malloc函数实际所分配的空间会比要求的大一...原创 2021-04-11 12:03:08 · 1571 阅读 · 0 评论 -
乐观锁,悲观锁
悲观锁(Pessimistic Lock)当要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制,在修改数据之前先锁定,再修改的方式被称之为悲观并发控制【Pessimistic Concurrency Control,缩写“PCC”,又名“悲观锁”】。悲观锁,具有强烈的独占和排他特性。它指的是对数据被外界修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定状态。乐观锁(Optimistic Locki...原创 2021-04-04 18:27:55 · 115 阅读 · 0 评论 -
基于cmake生成动态库,静态库,并调用
绝望的时候抬头看看,希望就在不远处闪闪发光。工程实践中,经常遇到动态库、静态库的创建和使用,使用cmake可以方便地完成跨平台编译。此例,写了一个用于实现加法和减法的类,并将其编译成动态库和静态库,并由可执行文件来调用它们。静态库:SolutionDLL动态库:SolutionStaticLib调用动态库的可执行文件: CallDLL调用静态库的可执行文件:CallStaticLibVs solution:Code:https://github.com...原创 2020-12-19 22:48:24 · 959 阅读 · 4 评论 -
进程-优先级反转
1. 优先级反转(Priority Inversion)由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。2. 产生原因其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞. 而此时又有优先级高于占有资源的任务(C)而低于被阻塞的任务(A)的优先级的任务(假设为B)时,于是,占有资源的任务就被挂起(占有的...原创 2020-10-22 23:07:14 · 542 阅读 · 0 评论 -
字节对齐 #pragma pack指令
#pragma pack用于指示编译器,设置数据在内存中的对齐方式。#pragma pack (n) 作用:编译器将按照n个字节对齐。Ref:https://blog.csdn.net/sweetfather/article/details/78487563原创 2020-10-07 22:50:00 · 235 阅读 · 0 评论 -
操作系统 信号量vs互斥锁
https://www.jianshu.com/p/c6ba8bcc22bc原创 2020-09-27 23:48:28 · 484 阅读 · 0 评论 -
协程
https://blog.csdn.net/fadbgfnbxb/article/details/88787361协程是一种用户态的轻量级线程,协程的调度完全由用户控制。从技术的角度来说,“协程就是你可以暂停执行的函数”。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。...原创 2020-09-27 21:46:51 · 123 阅读 · 0 评论 -
多个进程间共享动态链接库的原理
对于采用virtual address的操作系统来说,多个进程共享一份动态库的方法如下:操作系统将公用的动态库加载到物理内存中,假设A,B两个进程都需要用到这些dll, 则只需将dll在物理内存中的地址 与 进程A B的虚拟地址空间做一个映射连接。《Operation system concepts, 7th edition》中的解释比较直观了:" System libraries can be shared by several processes throgh mapping o...原创 2020-09-19 20:26:27 · 2093 阅读 · 2 评论 -
分布式系统的三个特性
https://blog.csdn.net/yeyazhishang/article/details/80758354Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。原创 2020-08-27 23:10:32 · 6624 阅读 · 0 评论 -
进程使用的动态库在进程空间的哪一部分?
进程使用的动态库在进程空间的哪一部分?原创 2020-08-27 23:07:51 · 380 阅读 · 0 评论 -
内存碎片
https://blog.csdn.net/fdk_lcl/article/details/89482835原创 2020-05-27 07:42:19 · 147 阅读 · 0 评论 -
虚拟内存与物理内存
https://blog.csdn.net/lvyibin890/article/details/82217193在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且这是固定的,如果没有虚拟内存,且每次开启一个进程都给4G的物理内存,就可能会出现很多问题: 因为物理内存时有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是...原创 2020-05-11 08:27:23 · 2032 阅读 · 0 评论 -
虚拟内存 Virtual Memory
虚拟内存是计算机系统内存管理的一种技术。物理内存:系统硬件提供的真实内存大小虚拟内存:为了解决物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间称为交换空间。...原创 2020-04-07 22:56:15 · 304 阅读 · 0 评论