![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 89
The Gao
这个作者很懒,什么都没留下…
展开
-
【操作系统】关于多线程同步中的死锁问题【一篇文章让你彻底搞明白死锁到底是什么情况及如何解决死锁】
死锁的引出案例以操作系统课程中著名的“生产者-消费者”案例为例,解释一下什么是死锁。void producer(){//生产者函数 while(1){ P(empty);//判断缓冲区空槽是否>=0,并将空槽-1 P(mutex);//进入临界区并上锁 pfunc();//执行生产函数,产生一个数据放置在占据的空槽上 V(mutex);//离开临界区并解锁 V(full);//将满槽+1,并判断满槽是否<原创 2021-05-15 15:38:01 · 589 阅读 · 1 评论 -
【操作系统】操作系统是如何启动的?看这一篇就够了【小白也能看得懂的详解操作系统之启动】
说起操作系统是如何启动的,首先有必要了解一下操作系统诞生的历史背景。通过了解历史背景,我们才能明确操作系统基本的工作逻辑。操作系统诞生的历史背景1936年,著名计算机学家图灵提出了图灵机的架构,控制器通过读写数据实现控制和运算的功能。后来,又提出了通用图灵机的架构,相比图灵机,通用图灵机可以写入控制器的逻辑,通过改变控制器逻辑,实现多种功能。1946年,著名数学家冯·诺伊曼提出了冯·诺依曼结构,也称普林斯顿结构。这是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址原创 2021-05-08 16:31:34 · 3349 阅读 · 6 评论 -
【操作系统】【计算机组成原理】CPU、MMU、cache的概念及实现,CPU访问操作系统内核的过程
计算机存储介质位于CPU内部的存储介质只有寄存器(CPU内有个寄存器堆,寄存器数量不多,也就20来个),寄存器是容量最小的存储介质,但是是最快的。其他的存储介质都位于CPU外部,容量由小到大分别是cache->内存->硬盘->网络(可视为无限容量)。CPU执行过程在我们运行.out文件中的一条指令时,该指令会在CPU中经历如下步骤:1.由于.out文件保存在磁盘内,由磁盘写入内存,再由内存进入cache区。2.CPU中的预取器,执行预取指令的工作,把这条二进制形式的指令读入CP原创 2021-05-07 13:13:30 · 938 阅读 · 0 评论 -
【操作系统】用户级线程(协程)执行原理(程序计数器PC,寄存器EBP、ESP,线程控制块TCB的变化)
一、程序计数器PC程序计数器PC指示的当前要执行的程序在CPU中的地址。二、寄存器EBP、ESP每个线程执行时,操作系统会为其分配一个栈帧,存储局部变量、返回地址等要素。描述这个栈帧用到了两个寄存器:EBP存储着当前函数栈底的地址,栈底通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址。ESP是一个始终指向栈顶的指针。三、线程控制块TCB与进程控制块PCB相似,线程控制块TCB中存储着与该线程有关的信息,如寄存器ESP等的值。四、单线程程序执行原理执行A程序,即将存储在磁盘中的原创 2021-05-06 22:59:40 · 1852 阅读 · 2 评论