自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Linux进程管理(五)三大初始进程

Linux内核从加载到内存到稳定运行初期,存在3个特殊的进程:idle进程(PID = 0), init进程(PID = 1)和kthread(PID = 2)。

2024-10-07 00:33:57 1030

原创 Linux进程管理(四)命名空间

命名空间(Linux namespace)机制为实现基于提供了很好的基础,LXC(Linux containers)就是利用这一特性实现了资源的隔离。创建的每个容器都有自己的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样,命名空间保证了容器之间互不影响。不同Container内的进程属于不同的Namespace,彼此透明,互不干扰。要创建新的Namespace,只需要在调用clone时指定相应的flag。Linux的命名空间机制提供了一种的解决方案。

2024-10-02 07:38:23 665

原创 Linux进程管理(二)进程描述符task_struct

本文linux内核版本5.10.226(只要是linux5.10.x就行,基本不会有大的出入),结构体struct task_struct定义在 include/linux/sched.h,长达732行,可见描述一个任务的复杂度之大。

2024-09-30 23:35:28 638

原创 Linux进程管理(一)进程与线程基础

线程被设计成进程的一个执行路径,同一个进程中的线程共享进程的资源,线程是进程的一部分,描述指令流执行状态,它是进程中的指令执行流的最小单元,是CPU调度的基本单位,因此系统对线程的调度所需的成本远远小于进程。进程与线程的区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。每个进程都有独立的地址空间,进程之间的切换会有较大的开销;

2024-09-27 21:56:37 793

原创 Linux进程管理(三)内核栈与结构体struct pg_regs、struct thread_info

Linux内核需要存储每个进程的PCB信息, linux内核是支持不同体系的的, 而不同的体系结构可能进程需要存储的信息不尽相同, 这就需要实现一种通用的方式将体系结构相关的部分和无关的部门进行分离,而thread_info就保存了特定体系结构的汇编代码段需要访问的那部分进程的数据。

2024-09-25 18:59:14 828

原创 linux内核中ioctl函数与write,read函数的区别

ioctl函数在Linux内核中的原型如下:: 要进行ioctl操作的文件描述符,通常是设备文件打开返回的值。: ioctl命令编码,用来指定具体的ioctl操作。它是一个常量,定义在内核头文件里。: 根据request不同可能有其他出入参数:*无参数请求,此处为空。*有一个参数请求,此处传一个指针。*有两个以上参数请求,此处传一个void*指针来接收结构体参数。

2024-01-17 12:29:14 1119

原创 GDB调试

GDB是GNU调试器(GNU Debugger)的缩写,是一种功能强大的调试工具,可以用于调试多种编程语言的程序,如C、C++、汇编等。GDB可以帮助程序员在程序运行时进行调试,包括查看变量的值、跟踪程序执行流程、设置断点等。GDB支持多种操作系统,包括Linux、Unix、Windows等。GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。

2023-12-27 17:24:52 2209 1

原创 常见存储器的区别

ROM和RAM指的都是半导体存储器,ROM是的缩写,RAM是的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。一、RAM与ROMRAM有两大类,一种称为RAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为RAM),DRAM保留数据的时间很短,速度也 比SRAM。

2023-11-20 11:29:08 137 1

原创 QT多线程的四种实现

在QT环境下进行桌面应用程序开发的时候,应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,易导致窗口卡顿。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行各自相关的逻辑操作,用户体验和程序的执行效率都显著提高。在qt中使用了多线程,有些事项是需要额外注意的:默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新;子线程负责后台的业务逻辑处理,子线程中不能对窗口对象做任何操作,, 如果操作了程序就会崩溃;

2023-11-08 02:38:03 3657 2

原创 计算机进制转换

逢十六进一,因为以16为底数来10-15不能用单个数字来表示,所以用英文字母来代替,10 用 A 表示、11 用 B 表示、12 用 C 表示、13 用 D 表示、14 用 F 表示。所以十六进制含有:0,1,2,3,4,5,6,7,8,9,A,B,C,D,F。逢十进一,数字中含有 0,1,2,3,4,5,6,7,8,9其中S代表1个数码,k是数码的位置量,底数是10。其中S代表1个数码,k是数码的位置量,底数是10。逢八进一,数字中含有0,1,2,3,4,5,6,7。5.每次取余数后将数组下标加1。

2023-10-27 20:08:45 192 1

原创 不调用库函数模拟实现strlen()、strcpy()、strcat()、memcpy()

【代码】不调用库函数模拟实现strlen()、strcpy()、strcat()、memcpy()

2023-10-27 17:11:02 292 1

原创 const关键字

如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加 const 修饰的同类型指针;在函数名后面表示是 C++ 常成员函数,该函数不能修改对象内的任何成员,只能发生读操作,不能发生写操作。关键字的位置和数据类型的位置的前后没影响,它只修饰a这个变量,它和其他的修饰符一样。这两个语句是一样的,

2023-10-27 16:16:05 52 1

原创 字符串循环右移N位

需要新申请一块相同大小的内存,把原字符串的后n个字节拷贝到它的开始地址,把原字符串的前(len-n)个字节拷贝到它的(开始地址+n)处。现有一个字符串 char str[] = "abcdefg", 右移3次后变成"efgabcd"我们再对整个字符串逆序一遍,结果-> "efgabcd"。总共要进行3次逆序:前半部分逆序,后半部分逆序,整体逆序。我们先把前半部分逆序变成 -> "dcba"前半部分:"abcd" 和后半部分 "efg"。再把后半部分逆序变成 -> "gfe"

2023-10-27 14:03:26 1134 1

原创 FFmpeg 源码库API功能简介

4.2或者 定位文件位置进行遍历(4.1从文件中读取数据包(2、根据url打开本地文件或网络流(3、读取媒体的数据包,查找流信息(1、分配解复用器上下文()或释放不使用的资源;

2023-10-26 21:06:38 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除