![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机系统基础
文章平均质量分 66
九阈
进厂了
展开
-
linux内核分析一CFS (完全公平调度算法)
进程优先级,进程nice值和%nice的解释用top或者ps命令会输出PRI/PR、NI、%ni/%nice这三种指标值,这些到底是什么东西?先给出大概的解释如下:PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行NI :进程Nice值,代表这个进程的优先值%nice :改变过优先级的进程的占用CPU的百分比 (呵呵,这句好难理解是吧,不急慢慢来_)PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。那N转载 2022-04-01 23:08:34 · 3301 阅读 · 1 评论 -
Linux进程管理之进程同步
并发进程存在的问题系统当中的多个进程,从资源访问的角度来看,一个进程的运行,有没有可能受到其他进程的制约。有可能一个和时间有关的错误共享变量的修改冲突一竞争关系进程之间的同步关系进程间的制约关系(1)竞争关系:有些资源需要互斥使用,因此各进程竞争使用这些资源一独占分配到的部分或全部共享资源,进程的这种关系为进程的互斥(2)同步关系:系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。即一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前该进程处于等待原创 2022-04-01 18:15:28 · 2230 阅读 · 0 评论 -
实验:线程同步与互斥
任务一 创造一个多线程共同访问变量的问题编写程序,定义一个全局变量sum,并赋值为0,在主线程中创建20个子线程,要求:1、这些子线程完成同样的功能,每个线程循环10000次,每次对sum执行+1操作2、所有子线程执行完之后,在主线程中打印最终的sum的值提示:每个线程对sum+1执行10000次,总共创建20个线程,那么这些子线程全部执行完之后,sum的值理论上应该是200000,但是,程序运行的结果并非200000(或许你的程序运行结果确实是200000,那么你可以尝试将子线程数目增加,但要注原创 2022-03-28 21:04:11 · 1146 阅读 · 0 评论 -
linux下的线程ID和进程ID
在描述线程ID和进程ID之前我们先来分清楚几个概念:1. 用户级线程和内核级线程什么是用户级线程?用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。什么是内核级线程?切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态,被称为内核支持的线程或轻量级进程。2. 进程ID,内核线程ID,用户态线程ID1、进程ID这里所说的进程ID指我们通过for转载 2022-03-20 20:38:46 · 1774 阅读 · 0 评论 -
SoC介绍以及系统内存储体
System on Chip,简称SoC,也即片上系统。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广义角度讲, SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。国内外学术界一般倾向将SoC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。SoC定义的基本内容主要在两方面:其一是它的构成,其二是它形成过程。系统级芯片的构成可以是系.转载 2022-03-18 09:44:04 · 2287 阅读 · 0 评论 -
漫画形式讲解红黑树
以下内容来源:https://www.jianshu.com/p/1cd10fd4a224二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因此查看右孩子13:3.由于10 < 13,因此查看左孩子11:4.由于10 < 11,转载 2022-03-13 22:54:28 · 179 阅读 · 0 评论 -
Linux内核进程管理
Linux进程状态TASK_ RUNNING– 进程是可执行的。它或者正在执行,或者在等待队列中等待被执行。(相当于 就绪态+运行态)TASK_ INTERRUPTIBALE(可中断)–进程正在睡眠/阻塞,等待某些条件的达成。也可能因为接收到信号而提前被唤醒(浅睡眠)。TASK_ UNINTERRUPTIBALE(不可被中断)–与可中断状态相同,但即使接收到信号也不会被唤醒(深睡眠)___TASK_ TRACED--被其他进程跟踪的进程。_TASK_ STOPPED(停止)- -进程停止执行。进程原创 2022-03-12 21:29:23 · 1314 阅读 · 0 评论 -
时间片轮转(RR)调度算法(详解版)
文章来源:http://c.biancheng.net/view/1247.html时间片轮转(RR)调度算法是专门为分时系统设计的。它类似于 FCFS调度,但是增加了抢占以切换进程。该算法中,将一个较小时间单元定义为时间量或时间片。时间片的大小通常为 10~100ms。就绪队列作为循环队列。CPU 调度程序循环整个就绪队列,为每个进程分配不超过一个时间片的 CPU。为了实现 RR 调度,我们再次将就绪队列视为进程的 FIFO 队列。新进程添加到就绪队列的尾部。CPU 调度程序从就绪队列中选择第一个转载 2022-03-12 17:20:56 · 20510 阅读 · 2 评论 -
进程和线程是什么 关系与区别
文章来源:https://www.cnblogs.com/peteremperor/p/13545987.html推荐:https://blog.csdn.net/godop/article/details/82775647进程进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。线程线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进转载 2022-03-12 16:46:03 · 181 阅读 · 0 评论 -
处理器以及处理机调度
处理器计算机的基本功能是执行程序,最终被执行的是存储在内存中的机器指令代码。处理器根据程序计数器的指向,从内存中取指令到指令寄存器,然后去执行,程序计数器指向下一条待执行的指令。处理器状态处理器如何知道当前运行的是操作系统还是用户程序?处理机执行用户程序,称为用户态(目态)处理机执行操作系统代码,称为系统态或内核态(管态)用户态和内核态之间最大的差别在于特权级不同,比如用户态的应用程序不能直接访问内核提供的接口。.特权指令与非特权指令在多用户的多道程序设计环境中,计算机的指令系统中的指原创 2022-03-12 16:37:13 · 1328 阅读 · 0 评论 -
结构体(struct)和联合体(union)的区别
文章来源:https://blog.csdn.net/sjtudou/article/details/81074916两者最大的区别在于内存利用一、结构体struct 各成员各自拥有自己的内存,各自使用互不干涉, 同时存在的,遵循内存对齐原则。 一个struct变量的总长度等于所有成员的长度之和二、联合体union各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。因而,联合体比结构体更节约内存。一个union转载 2022-03-12 00:42:45 · 356 阅读 · 0 评论 -
Linux pid与tgid概念
文章来源:https://www.cnblogs.com/shihuvini/p/10043251.html在Linux操作系统层面,线程其实只是特殊的进程,最特殊之处在于跟其他“线程进程“共享内存(包括代码段、数据段等,但不共享栈)。熟悉Linux下C编程的同学都知道,每个进程都有自己的pid,每个线程都有自己的线程id(pthread_t类型),但这是在用户空间的层面。而在内核层面中,线程其实也是进程。为了更好地区分这些概念,我们用任务/task来指代内核中的进程概念,而依旧用进程来指定用户空间层转载 2022-03-12 00:33:31 · 1174 阅读 · 0 评论 -
进程及其状态模型和进程结构和线程
进程和程序进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(PCB)进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,-一个进程可对应多个程序。为什么要引入进程现代操作系统的两个基本特征:并发和共享。引入进程的概念,来描述程序的执行过程。进程是操作系统调度的基本单位,也是系统资源分配的基本单位。进程的结构:程序、数据、P原创 2022-03-10 22:31:23 · 1062 阅读 · 0 评论 -
静态库、共享库的封装与使用
静态库就是目标文件的集合,调用静态库文件就是把静态库中二进制指令拷贝到你的可执行文件中 优点:速度相对比共享库较快,可执行文件运行时不需要依赖静态库 缺点:可执行文件相对较大,当静态库修改后,可执行文件需要重新编译例如现在有一个hello函数需要封装1、编写hello.c文件#include <stdio.h>void hello(void){ printf("hello,world\n");}2、编译hello.c文件生成目标文件hello.ogcc -c he转载 2021-10-20 20:42:54 · 138 阅读 · 0 评论 -
ubuntu下写C程序,编译运行查看汇编代码
作为一个不经常用linux系统经常忘记命令的人,我还是记录一下吧。如果是第一次编译C的话要先在终端写这两个命令安装vim和gccsudo apt-get install vim 安装Vimsudo apt-get install gcc 安装gcc终端在桌面直接ctrl+Alt +T,或者鼠标右键打开终端。同时,如果你在不同的目录下打开终端,你的命令是自动定位到那个目录的。等安装好环境之后1.先自己新建一个文件夹以后存你的代码。比如我在主目录下新建了个coding文件。那在终端输入cd cod转载 2021-10-20 20:27:52 · 1343 阅读 · 0 评论 -
Linux上查看源代码汇编的命令方法
首先方法 一:使用gcc -S a.c得到a.s,用cat a.s查看;方法二:先gcc -c a.c得到a.o,用objdump -d a.o来反汇编查看里面的汇编代码;方法三:在调试中进入gdb, 用disassemble命令查看。原文链接:https://blog.csdn.net/qq_41026740/article/details/95309170...转载 2021-10-20 19:54:45 · 1249 阅读 · 0 评论 -
浅谈C/C++浮点数在内存中的存储方式
C/C++浮点数在内存中的存储方式任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法。在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N转载 2021-10-18 11:08:03 · 239 阅读 · 0 评论 -
计算机中带符号的整数为何采用二进制的补码进行存储?
计算机中带符号的整数为何采用二进制的补码进行存储? 我们都知道在计算机内部数据的存储和运算都采用二进制,是因为计算机是由很多晶体管组成的,而晶体管只有2种状态,恰好可以用二进制的0和1表示,并且采用二进制可以使得计算机内部的运算规则简单,稳定性高。在计算机中存在实数和整数,而整数又分为无符号整数和有符号整数,无符号的整数表示很简单,直接采用其二进制形式表示即可,而对于有符号数的表示却成了问题,如何表示正负?如何去处理正负号?下面来具体说下其中的原因,在这之前先了解一下原码、反码和补码这几个概念。1.原转载 2021-10-18 10:24:04 · 3494 阅读 · 0 评论 -
C语言中的整数以及浮点数的编码表示
C语言支持的基本数据类型无符号整数 (Unsigned integer)原创 2021-10-11 21:57:11 · 7191 阅读 · 0 评论 -
定点数的编码表示(补码)
数值数据的表示数值数据表示的三要素1、进位计数制2、定、浮点表示3、如何用二进制编码• 进位计数制:十进制、二进制、十六进制、八进制数及其相互转换• 定/浮点表示(解决小数点问题)1、定点整数、定点小数2、浮点数(可用一个定点小数和一个定点整数来表示)• 定点数的编码(解决正负号问题)原码、补码、移码、反码 (很少用)补码 - 模运算(modular运算)补码(2’s complement)的表示计算机中的运算器是模运算系统运算器适合用补码表示和运算求特殊数的补码原创 2021-10-11 19:34:57 · 1037 阅读 · 0 评论 -
二进制、八进制、十进制、十六进制转换与编码
“转换”的概念在数据表示中的反映信息的二进制编码机器级数据分两大类1、 数值数据:无符号整数、带符号整数、浮点数(实数)2、非数值数据:逻辑数(包括位串)、西文字符和汉字计算机内部所有信息都用二进制(即:0和1)进行编码用二进制编码的原因1、制造二个稳定态的物理器件容易(电位高/低,脉冲有/无,正/负极) – 二进制编码、计数、运算规则简单2、正好与逻辑命题真/假对应,便于逻辑运算3、 可方便地用逻辑电路实现算术运算4、 真值和机器数 ( 非常重要的概念!) –– 机器数:用0和1编码原创 2021-10-08 13:45:37 · 2787 阅读 · 0 评论