- 博客(10)
- 收藏
- 关注
原创 【计算机原理】网络系统
在没有 DMA 技术前,I/O 的过程是这样的:整个数据的传输过程,都要需要 CPU 亲自参与搬运数据的过程,而且这个过程,CPU 是不能做其他事情的。直接内存访问(Direct Memory Access,DMA) 技术引入后,在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务。
2024-08-30 16:12:45
664
原创 【计算机原理】进程管理
线程是进程当中的一条执行流程。同一个进程内多个线程之间可以共享代码段、堆空间、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。当已经有一个线程加锁后,其他线程加锁则就会失败。互斥锁加锁失败后,线程会释放 CPU,给其他线程(线程切换)。自旋锁加锁失败后,线程会忙等待,直到它拿到锁。
2024-08-28 20:43:33
625
原创 【计算机原理】操作系统结构
混合内核:是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序。宏内核,包含多个模块,整个内核像一个完整的程序,包含了进程调度、内存管理、文件系统、设备驱动等模块,都运行在内核态。**内核(Kernel)**作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。微内核,有一个最小版本的内核,内核只保留最基本的能力,一些模块和服务则由用户态管理。执行,而当程序使内核空间时,程序则在。
2024-08-27 15:18:28
439
原创 【计算机原理】硬件结构
本文为个人学习【小林coding - 图解系统】过程中的归纳整理。中断是一种异步的事件处理机制,可以提高系统的并发处理能力。操作系统收到了中断请求,会打断其他进程的运行。为了避免由于中断处理程序执行时间过长,而影响正常进程的调度,Linux 将中断处理程序分为上半部和下半部:【上半部】对应硬中断:由硬件触发中断,用来快速处理中断。【下半部】对应软中断,由内核触发中断,用来异步处理上半部未完成的工作。
2024-08-26 21:38:56
512
原创 【Linux C基础】C语言概念辨析
编译是将源代码转换为目标代码的过程。它是在编译器的帮助下完成的。编译器检查源代码是否存在语法或结构错误,如果源代码没有错误,则生成目标代码。编译过程可分为预处理、编译、汇编和链接四个步骤。不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序错误。因为这会导致在使用了该头文件的每个 C 语言文件中都定义该静态变量从而会引起空间浪费或者程序错误所以。不推荐在头文件中定义任何变量,当然也包括静态变量。
2024-08-23 19:42:18
883
原创 【Linux C基础】虚拟内存分布
程序只是一段可以执行的代码文件,通俗讲在 linux 上就是一个可执行文件。当一个程序运行时就被称为进程,即进程是运行状态的程序。对32位处理器,虚拟内存空间为4G,每个进程都认为自己拥有4G的空间。虚拟内存又被划分为不同分区,用于存储不同类型的数据。简单地说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,导致整个系统崩溃。
2024-08-20 22:45:44
524
原创 【Linux C基础】程序编译
define的优势在于其既可以替代常数值,又可以替代表达式,甚至是代码段;但#define是在编译期完成的文本替换,不做正确性处理。因此使用#define定义常量,容易引入预料不到的BUG。而const的引入则可以增强程序的可读性,它使程序的维护与调试变得更加方便。内存分配#define只是单纯的文本替换,且#define常量的生命周期止于编译期,不分配内存空间,它存在于程序的代码段。const常量则在堆/栈中分配了空间,const常量在程序中确确实实存在,并且可以被调用、传递。安全检查const。
2024-08-20 18:32:15
832
原创 【计算机网络】OAI虚拟网卡通信
Linux TUN 设备是一种虚拟网络设备,用于在用户空间和内核空间之间建立数据通道,使用户空间程序可以通过这个设备与内核网络栈进行交互。TUN 设备是一种通用的网络隧道设备,常用于实现虚拟专用网络(VPN)和其他网络隧道技术。
2024-08-07 16:36:47
951
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人