自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 socket编程

单播地址指定一个主机的单个接口,广播地址指定网络上的所有主机,多播地址则针对一个多播组中的所有主机。in_addr 应该被赋值为 INADDR_* 之一(例如,INADDR_LOOPBACK),可以使用 htonl(3) 或通过 inet_aton(3)、inet_addr(3)、inet_makeaddr(3) 库函数设置,也可以直接使用名称解析器。3) INADDR_BROADCAST(255.255.255.255)表示任何主机,并且由于历史原因,其在绑定上的效果与 INADDR_ANY 相同。

2025-07-01 22:54:52 636

原创 进程间通信之共享内存

共享内存是高效的进程间通信机制,允许多个进程直接访问同一块物理内存区域。其工作原理是通过shmget()创建共享内存段,shmat()将其映射到进程虚拟地址空间。内核使用shmid_kernel结构管理共享内存,并通过内存文件系统(shmem)实现跨进程映射。具体流程包括:参数校验、权限检查、内核对象锁定、文件结构准备和虚拟内存映射(do_mmap)。该机制避免了数据拷贝,但需处理并发访问问题。系统调用最终通过ipc_namespace实现资源隔离,确保安全性和高效性。

2025-06-23 15:30:37 989

原创 Linux进程间通信——信号

假设我们有一个进程A会从tap网卡中读取数据,main函数里面调用系统调用通过中断陷入内核按照系统调用原理,将用户态栈的信息保存在 pt_regs 里面,也即记住原来用户态是运行到了 line A 的位置在内核中执行系统调用读取数据当发现没有什么数据可读取的时候进入睡眠状态,并且调用schedule()让出CPU将进程状态设置为可中断的睡眠状态TASK_INTERRUPTIBLE,也即如果有信号来的话是可以唤醒它。

2025-06-21 10:50:54 1047

原创 管道型进程间通信

Linux管道机制解析:进程间通信的桥梁管道的本质是一种进程间通信机制,由UNIX早期开发者道格拉斯·麦克罗伊提出,用于将一个程序的输出作为另一个程序的输入。Linux实现了两种管道类型:匿名管道和命名管道。两种管道最终都通过pipefs虚拟文件系统实现,核心是pipe_buffer内存缓冲区和pipefifo_fops操作集合。匿名管道侧重临时通信,命名管道则提供了更灵活的持久化通信方案。

2025-06-18 11:14:35 572

原创 静态链接和动态链接

静态链接和动态链接的简要介绍

2025-06-13 13:37:35 695

原创 Linux下的进程调度机制

Linux下的进程调度

2025-06-08 14:20:11 1111

原创 Linux 下的COW机制(copy-on-write)

Linux通过MMU进行虚拟地址到物理地址的转换,当进程执行fork()后,会把页中的权限设置为RD-ONLY(只读)。

2025-06-06 14:37:28 935

原创 操作系统中的设备管理,Linux下的I/O

其中,设备独立性软件、设备驱动程序、中断处理程序属于操作系统的内核部分,即“I/O 系统”,或称“I/O 核心子系统”。

2025-06-05 14:32:50 1271

原创 Linux内核初始化剖析

linux内核的初始化,start_kernel1函数的详析

2025-06-04 09:51:48 282

原创 线程和线程池

A“​线程​”没什么好说的,是 CPU 调度的最小单位,也是操作系统的一种抽象资源。“​池​​”?水池装着水,线程池则是装着线程,是一种抽象的指代。抽象的来说,可以当做是一个池子中存放了一堆线程,​故称作线程池​​。简而言之,线程池是指代一组​预先创建的​、​可以复用的线程集合​。这些线程由线程池管理,用于执行多个任务而无需频繁地创建和销毁线程。这是一个典型的线程池结构。线程池包含一个任务队列,当有新任务加入时,调度器会将任务分配给线程池中的空闲线程进行执行。线程在执行完任务后会进入休眠状态。

2025-06-03 10:44:56 854

原创 Linux内核体系结构简析

Linux体系结构和内核结构

2025-06-02 23:49:19 773

原创 线程的两种实现方式

线程的两种实现方式——内核支持线程(kernal Supported Thread, KST), 用户级线程(User Level Thread, ULT)

2025-05-15 21:49:18 435

原创 用户态和内核态

(1)特权指令是指 具有特殊权限的指令,如:清除内存,置时钟,分配系统资源,修改虚存的段表或页表,修改用户的访问权限等,由于这些指令的权限过大,使用不当会导致难以想象的灾难,甚至于整个系统崩溃。例如,当用户程序通过系统调用请求OS服务时,系统必须从用户态切换到内核态,以响应请求。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为内核态,称为。当计算机系统执行用户程序时,系统处于用户态。,在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。

2025-05-15 14:36:14 350

原创 中断隐指令

中断隐指令

2025-05-13 13:13:13 621

原创 详析内存池

通过内存池技术优化内存分配(在MSVC上效果显著,数据量越大越明显)

2025-04-30 00:39:05 637

原创 一文详解贪心算法

《算法导论》有关贪心和相关例题的详细解析以及信息学奥赛C++的贪心问题

2024-10-29 16:11:28 1402 1

原创 day10_编译原理学习

哈工大《编译原理》学习

2024-10-28 13:33:19 432

原创 一文详解动态规划

动态规划算法的细节,实现,相关题目

2024-10-27 23:43:54 1340

原创 二叉搜索树、红黑树的概念、性质以及动态操作(两万字解析)

《算法导论》以及myTinySTL有关红黑树的万字解析

2024-10-17 22:26:02 1125

原创 day09_编译原理学习

哈工大的《编译原理》学习笔记

2024-10-07 22:42:48 361

原创 day08_编译原理学习

哈工大《编译原理》课程学习笔记

2024-09-20 13:53:19 1159

原创 day07_编译原理学习

哈工大的编译原理课程学习笔记——第四章

2024-09-16 17:22:41 1052

原创 day06_编译原理学习

哈工大的编译原理课程学习笔记

2024-09-14 09:39:05 1015

原创 day05_编译原理学习

FIRST和FOLLOW集合的定义和计算,以及如何构建预测分析表

2024-09-11 21:44:13 685

原创 day04_编译原理学习

处理文法的编译器大致分为三种类型:通用型,自顶向下型和自底向上型。编译器中常用的方法可以分为自顶向下和自底向上。

2024-09-03 22:30:22 1279 1

原创 day3_编译原理学习

龙书在第二章中讲述了 制成语法制导翻译器的步骤和要素,并对语法分析器和词法分析器的概念做了先导,以及使用JAVA简易实现了语法分析器和词法分析器.本次笔记记录了龙书部分第二章和第三章以及哈工大课程第三部分视频的要点。

2024-08-30 21:44:46 785 2

原创 day2_编译原理学习

字母表是一个有穷符号集合符号:字母, 数字,标点符号等例如:二进制字母表{0,1},ASCII串是字母表中符号的一个有穷序列。串s的长度,通常记作|s|,是指s中符号的个数。空串是长度为0的串,用表示文法用于组织编译器的前端,它自然地描述了大多数程序设计语言的层次化语法结构。一个上下文无关文法的由四个元素构成:(1)一个终结符号集合,有时也称为“词法单元”。终结符号式该文法所定义的语言的基本符号的集合。(2)一个非终结符号集合,有时也称为“语法变量”。每个非终结符号串的集合。

2024-08-28 21:09:19 922 1

原创 001_编译原理学习

跟着哈工大的 编译原理 课程以及《编译原理》(龙书)的学习笔记。 第一天!

2024-08-27 09:54:08 715 1

空空如也

空空如也

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

TA关注的人

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