- 博客(7)
- 收藏
- 关注
原创 【Day7】Linux应用层开发 进程和线程
此外,当所请求的虚拟地址没有映射到物理地址或虚拟页对应的数据位于磁盘的交换空间中时,即产生缺页故障,MMU会通知操作系统,由操作系统来处理这种情况,为虚拟页分配页帧,或将数据从硬盘加载到内存的一个页帧中,然后更新页表以建立新的映射关系。并且,所有内核线程的PGID都是0。在32位系统中,每个进程的虚拟内存地址空间为4GB,假设页大小为4KB,则一个进程的虚拟地址空间要分为1M页,假定每个PTE的大小为4字节,每个进程就需要占用4MB 的空间来存储页表,启动100个进程,仅页表就要占用400MB的内存空间。
2024-12-14 00:14:05
614
原创 【Day5】Linux应用层开发 线程处理
Linux 中的线程是指轻量级的执行单元,相比于进程,具有以下特点:(1)进程(Process)是正在执行的程序的实例。每个进程都有自己的地址空间、代码段、数据段和打开的文件描述符等资源。线程(Thread)是进程内的一个执行单元,它共享相同的地址空间和其他资源,包括文件描述符、信号处理等,但每个线程都有自己的栈空间。(2)由于共享地址空间和数据段,同一进程的多线程之间进行数据交换比进程间通信方便很多,但也由此带来线程同步问题。(3)同一进程的多线程共享大部分资源,除了每个线程独立的栈空间。
2024-11-01 20:24:42
802
原创 【Day3】Linux应用层开发 进程处理
顾名思义,进程(Process)是正在运行的程序,是操作系统进行资源分配和调度的基本单位。程序是存储在硬盘或内存的一段二进制序列,是静态的,而进程是动态的。进程包括代码、数据以及分配给它的其他系统资源(如文件描述符、网络连接等)。我们打开的VMWare、开启的浏览器都对应操作系统的一个进程。在/home/atguigu下创建process_test目录,本章的所有文件都会放在该目录下。在Linux 中,信号是一种用于通知进程发生了某种事件的机制。
2024-10-28 17:28:14
322
原创 【Day2】Linux应用层开发 文件I/O
在Linux 系统中,当我们打开或创建一个文件(或套接字)时,操作系统会提供一个文件描述符(File Descriptor,FD),这是一个非负整数,我们可以通过它来进行读写等操作。然而,文件描述符本身只是操作系统为应用程序操作底层资源(如文件、套接字等)所提供的一个引用或“句柄”。在Linux 中,文件描述符0、1、2是有特殊含义的。 0是标准输入(stdin)的文件描述符 1是标准输出(stdout)的文件描述符 2是标准错误(stderr)的文件描述符。
2024-10-21 10:53:55
1071
原创 Makefile编写手册
Makefile的核心概念是规则和依赖关系,规则定义了如何生成一个或多个目标文件,而依赖关系则指定了生成目标文件所需要的源文件或其他依赖文件。make 输出的文件名取决于规则下的命令(即gcc语句最后-o的文件名),而目标名称(第一条语句冒号前的文件名)决定make追踪的目标文件名。我们应确保命令生成的目标文件名和目标名一致。⑤rm ./$@的作用是在执行完毕后删除目标文件,如果没有这个操作,当源文件fopen_test.c未更改时就无法重复执行,会提示:make:“fopen_test”已是最新。
2024-09-30 13:54:36
1025
原创 【Day1】Linux应用层开发 Linux下的C语言开发
除了上面的四个section,.o文件中还可能存在其它section。通过以下方式查看更多的section 类型。可执行文件需要经过链接才可以获得查看可执行文件main中的所有section及其头部信息输出如下。
2024-09-30 03:12:41
853
原创 学就一个字
准备在此记录每天的学习内容,给自己一点动力吧。我相信只要自己能够付出足够多的努力,一定能达成自己的目标。自己真的还有太多的东西想要去实现,还有很多的责任与梦想。每日更新,鞭策自己,没死就得更新,希望和佬们一起学习,拿到offer的那天高低放个鞭炮。学习方向:c/c++,嵌入式,QT,Linux开发(后面继续补充)
2024-09-20 21:17:02
175
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人