初学者必看:Linux操作系统入门
文章平均质量分 93
本专栏适合初学者学习Linux操作系统,从基础概念到实际操作,内容通俗易懂,逐步引导读者进入Linux世界。
小白苦学IT
Practice the code hard, hoping to get my own offer.
展开
-
深入理解DNS、ICMP协议与NAT技术:网络世界的三大基石
在网络世界中,数据的传输和交互离不开各种协议和技术的支持。其中,DNS(域名系统)、ICMP(Internet控制消息协议)和NAT(网络地址转换)技术无疑是构建现代互联网基础设施的三大基石。它们各自扮演着不同的角色,共同确保了网络的高效、安全和稳定。DNS,作为互联网的“电话簿”,负责将我们熟悉的域名(如www.example.com)转换为计算机能够理解的IP地址。没有DNS,我们将无法轻松访问互联网上的各种资源。ICMP,则是一个用于在IP主机、路由器之间传递控制消息的网络层协议。原创 2024-05-09 20:57:27 · 760 阅读 · 1 评论 -
深入探索数据链路层:网络通信的基石
在网络通信的宏伟世界中,数据链路层扮演着至关重要的角色。它位于物理层和网络层之间,不仅直接处理与物理媒介的交互,还负责将数据帧从一个节点可靠地传输到另一个节点。本文将带您领略数据链路层的魅力,探讨其工作原理、关键技术以及在实际网络中的应用。在数据通信的旅程中,数据链路层是第一个对原始数据进行处理的层次。它接收来自网络层的数据包,并为其添加必要的帧头和帧尾,形成可以在物理媒介上传输的数据帧。同时,数据链路层还负责处理传输过程中的差错检测与纠正、流量控制以及媒体访问控制等关键任务。原创 2024-05-09 19:38:09 · 951 阅读 · 0 评论 -
IP协议全解析:网络层通信的基石
在数字化时代的浪潮中,网络通信无处不在,它连接着世界的每一个角落,承载着信息的高速传递。而在这庞大的网络体系中,网络层扮演着至关重要的角色。作为网络通信的基石,网络层负责将数据从源地址传输到目的地址,确保数据的可靠传输和路由选择。IP协议,作为网络层的核心协议,定义了数据包的格式、寻址方式和路由机制。它像是一张无形的地图,指导着数据包在网络中的传输路径。然而,IP协议的工作原理和具体实现却常常让人感到神秘和复杂。本文旨在为读者揭开IP协议的神秘面纱,深入探索其原理和实践。原创 2024-05-08 13:10:59 · 1043 阅读 · 1 评论 -
TCP/IP协议族中的TCP(三):解析其关键特性与机制
TCP(Transmission Control Protocol,传输控制协议)是互联网协议族中至关重要的组成部分,它为应用程序提供了一种可靠的、面向连接的、字节流的数据传输服务。在复杂多变的网络环境中,TCP以其独特的机制确保了数据的完整性和有序性。然而,正如任何技术都有其局限性一样,TCP协议在使用过程中也面临着一些挑战,如面向字节流的处理方式、粘包问题以及异常情况的处理等。原创 2024-04-27 21:50:43 · 1186 阅读 · 2 评论 -
TCP/IP协议族中的TCP(二):解析其关键特性与机制
接收端(相当于超市老板)在收到数据包后,并不立即发送ACK确认报文(相当于告诉供货员需要多少箱冰红茶),而是等待一段时间,看看是否还有更多的数据包到达,或者根据自身的处理能力来决定是否可以接收更多的数据。这样做的好处是,通过一个报文同时完成了数据的确认和响应的发送,减少了网络中的传输次数,从而提高了网络的整体效率。例如,当接收方处理数据的速度远远跟不上发送方的发送速度时,为了防止数据溢出,接收方可能会将窗口大小调整为0,即告诉发送方暂停发送数据,直到接收方处理完当前数据并准备好接收新数据为止。原创 2024-04-27 21:09:02 · 983 阅读 · 0 评论 -
TCP/IP协议族中的TCP(一):解析其关键特性与机制
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它是互联网协议族(TCP/IP协议族)中的重要组成部分,旨在适应支持多网络应用的分层协议层次结构。在不同的计算机通信网络的主计算机之间,TCP为各种进程提供可靠的通信服务。TCP协议的重要性在于其保证了数据在传输过程中的可靠性、顺序性和无差错。原创 2024-04-27 10:49:04 · 1150 阅读 · 1 评论 -
UDP协议深度解析:从原理到应用全面剖析
随着互联网的蓬勃发展,网络通信协议成为了支撑其稳定运行的关键。UDP协议作为网络通信协议中的重要一员,以其高效、简洁的特点在网络通信中发挥着重要作用。本文将带您深入了解UDP协议的原理、特点以及应用,帮助您更好地掌握这一网络通信的核心技术。udp协议概念和工作原理UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,具有简单、高效的特点,适用于一些对数据可靠性要求不高的应用场景。原创 2024-04-20 19:36:45 · 1167 阅读 · 1 评论 -
传输层——再谈端口号
在计算机网络中,端口号扮演着至关重要的角色。尤其在传输层,端口号成为了区分不同应用程序或服务的唯一标识。通过端口号,操作系统能够准确地将数据流分配给相应的进程或服务。这种机制保证了网络数据的准确传输和高效处理。再谈端口号端口号(Port)标识了一个主机上进行通信的不同的应用程序;在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过netstat -n查看);端口号范围划分。原创 2024-04-20 18:31:03 · 754 阅读 · 1 评论 -
HTTP协议详解:从URL到HTTP报文的全貌
随着互联网的飞速发展,HTTP协议作为支撑网络应用的核心基石,扮演着举足轻重的角色。无论是日常的网页浏览、在线购物,还是企业级的系统交互、数据交换,都离不开HTTP协议的默默支撑。本文将从认识URL开始,逐步深入HTTP协议的核心概念,通过理解和实践,帮助读者全面掌握HTTP协议的工作原理和应用技巧。原创 2024-04-17 12:57:05 · 1138 阅读 · 1 评论 -
自定义协议:序列化与反序列化的深度解析与实践
满足特定需求:不同的应用或系统对数据的处理方式和传输要求可能各不相同。通过自定义协议,我们可以根据实际需求来定义数据的格式和传输方式,以满足特定的业务需求。优化性能:自定义协议可以根据网络条件、数据类型和传输需求等因素进行优化,以提高数据传输的效率和稳定性。保障安全性:通过自定义协议,我们可以加入数据加密、身份验证等安全措施,以保障数据在传输过程中的安全性和完整性。原创 2024-04-12 21:53:59 · 1174 阅读 · 2 评论 -
深入理解Linux系统中的前后台任务与守护进程
在Linux系统中,进程管理是至关重要的一个环节。其中,前后台任务和守护进程是进程管理中不可忽视的两个概念。前后台任务决定了进程与用户交互的方式,而守护进程则以其独特的运行方式,为系统提供稳定且持续的服务。本文将深入探讨Linux系统中的前后台任务与守护进程,帮助读者更好地理解和运用它们。原创 2024-04-11 12:16:23 · 928 阅读 · 1 评论 -
基于Socket简单的UDP网络程序
网络编程前言网络编程是连接数字世界的桥梁,它让计算机之间能够交流信息,为我们的生活和工作带来便利。从简单的网页浏览到复杂的分布式系统,网络编程无处不在。然而,网络编程涉及诸多复杂概念和技术,如IP地址、端口号、Socket、TCP/UDP协议等,需要我们深入学习和掌握。同时,网络环境的复杂性、数据安全性等问题也带来了挑战。但正是这些挑战,让网络编程充满了无限可能。掌握网络编程技术,我们可以开发出各种创新应用,为人们提供更高效、智能的服务。原创 2024-04-04 23:46:34 · 997 阅读 · 1 评论 -
网络编程核心概念解析:IP地址、端口号与网络字节序深度探讨
网络编程,作为现代信息社会中的一项核心技术,不仅支撑着互联网应用的蓬勃发展,更深刻地影响着我们的日常生活与工作方式。在探索网络编程的奥秘时,我们会发现一些基础而重要的概念,如IP地址、端口号和网络字节序,它们如同构建网络世界的基石,支撑起整个网络通信的大厦。IP地址,作为网络世界中每个设备的唯一标识,为信息的准确传递提供了基础。端口号,则进一步细化了通信的目标,确保数据能够到达正确的应用程序。而网络字节序,则是网络通信中数据格式化的关键,它确保了不同系统间能够正确地解析和传递数据。原创 2024-04-04 09:36:22 · 1118 阅读 · 1 评论 -
Linux网络基础(一)网络基础探索之旅
独立模式: 计算机之间相互独立;网络互联: 多台计算机连接在一起, 完成数据共享;局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;广域网WAN: 将远隔千里的计算机都连在一起;那么我们从这里看到网络的发展之后,明显的看到网络使用的范围越来越大了,由于距离变长了,那么通信所需要的要求也就变高了,通信的复杂度是与距离成正比的,所以这样是会遇到一些问题的:计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好原创 2024-04-02 14:38:34 · 944 阅读 · 1 评论 -
线程安全问题+读写者问题
线程安全问题是指在多线程环境中,当多个线程同时访问共享数据时,由于操作顺序的不确定性,可能导致数据的不一致性或错误。简单来说,就是当一个线程访问的共享数据被其他线程修改时,就可能发生线程安全问题。线程安全问题的原因主要有以下几点:操作系统的线程调度方式:操作系统的线程是“抢占式执行,随机调度”,这意味着程序在多线程环境下的执行顺序存在很多变数,可能导致线程之间的操作冲突。多个线程同时修改同一个变量。原创 2024-04-01 13:51:27 · 856 阅读 · 2 评论 -
你知道Linux线程池的重要性吗?带你手撕线程池
线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。举例说明假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。原创 2024-04-01 00:10:24 · 1054 阅读 · 0 评论 -
POSIX信号量
而访问指定的某一个指定的位置本质就是访问临界资源,那么这里还需要进行判断能否访问吗?其实不用再进行判断了,因为如果申请信号量成功了就已经说明条件满足了,也可以说在信号量那个地方就已经进行判断过了。初始化信号量参数:pshared:0表示线程间共享,非零表示进程间共享value:信号量初始值销毁信号量等待信号量功能:等待信号量,会将信号量的值减1//P()发布信号量功能:发布信号量,表示资源使用完毕,可以归还资源了。将信号量值加1。//V()原创 2024-03-30 13:39:44 · 742 阅读 · 1 评论 -
线程同步+理解生产者消费者模型
下面我们来谈一个故事理解线程同步的概念:假设学校里面有一个环境非常好的超级vip自习室是公共的,但是有个前提,一次只能进去一个学生,因为只有一把钥匙挂在超级vip自习室门外的墙上的。假设你是一个学习成绩比较好的小学霸,起的比较早,所以一大早就打算去超级vip自习室学习,所以一到自习室门口就把钥匙拿了下来,然后打开门进入自习室把门关上进行学习,自习了一段时间后外面的学生多了起来,其他的学生进不来,因为墙上没钥匙了,其他学生进不去呢就知道等一等才有机会使用自习室。。原创 2024-03-30 08:55:24 · 890 阅读 · 0 评论 -
可重入VS线程安全
线程安全:多个线程并发同一段代码时,不会出现不同的结果。常见对全局变量或者静态变量进行操作,并且没有锁保护的情况下,会出现该问题。重入:同一个函数被不同的执行流调用,当前一个流程还没有执行完,就有其他的执行流再次进入,我们称之为重入。一个函数在重入的情况下,运行结果不会出现任何不同或者任何问题,则该函数被称为可重入函数,否则,是不可重入函数。原创 2024-03-29 08:34:53 · 296 阅读 · 1 评论 -
Linux线程互斥
Thread.hppmain.cc运行结果:在这次测试当中我们发现票数出现了负数,然而当我们真正现实生活中电影院抢票或者高铁飞机抢票有多少个位置它就卖多少张票,而不可能多卖票,否则座位会产生冲突,所以这里票数出现了负数说明多卖出去了几张票,所以票数卖到负数是不合理的。我们把这种情况叫做数据不一致,所以对于这部分共享资源为了防止出现数据不一致的情况,我们是要把这部分共享资源保护起来的,怎么保护呢?我们只需要保证任何一个时刻只允许一个线程正在访问共享资源。被保护起来的资源我们叫做临界资源。我们把访问原创 2024-03-28 20:48:22 · 1395 阅读 · 0 评论 -
linux操作系统——线程控制+线程封装
我们前面谈到了由于用户只认线程,而linux操作系统是通过用轻量级进程模拟线程,并不是真正的线程,所以linux的解决方案是中间添加一层软件层,向上提供用户所认为的线程接口,向下则调用对应的Linux提供的轻量级进程的接口与用户调用的线程接口与之对应,所以当我们有五个线程时我们都可以看到有5个不同的LWP。Linux天然的就知道进程管理的那一套方法,知道怎么创建,如何被调度,进程状态是运行还是等待,知道怎么回收,怎么终止等等这一系列对进程的管理。那么它又是怎么知道创建了几个,而是什么呢?原创 2024-03-25 23:49:37 · 630 阅读 · 1 评论 -
Linux操作系统——多线程
1.1线程优点创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多线程占用的资源要比进程少很多能充分利用多处理器的可并行数量在等待慢速I/O操作结束的同时,程序可执行其他的计算任务计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。1.2线程缺点1.3线程异常单个线程如果出现除零,野指针问题导致线程崩溃,进程也会随着崩溃。原创 2024-03-19 20:21:25 · 1003 阅读 · 1 评论 -
Linux操作系统——线程概念
所以我们把磁盘上文件以4KB为单位的块叫做页帧,而把物理内存划分成4KB的块叫做页框,把文件系统IO的基本单位4KB叫做page size.其实正是文件管理,内存管理,进程管理,背后的编译器所促成的一个文件系统IO的基本单位和内存划分的基本单位为4KB.而文件除了内容和属性,还有一个就是对应的文件缓冲区,所以文件的缓冲区的本质是本质就是把一个文件相关的一些内容或者属性放在内存不同位置的关联起来,所以文件的缓冲区就是struct file与内存中属于该文件的数据所构成的关联关系。答案是要的,如何管理?原创 2024-03-15 00:01:39 · 1260 阅读 · 1 评论 -
Linux操作系统——进程信号
生活当中哪些场景算信号呢?比如说你晚上调了个闹钟,然后第二天早上你听到了闹钟响了你就知道该起床了,这种机制就叫做。在生活中我们的信号是非常非常多的,比如说有:红绿灯,下课铃声,狼烟, 防控警报,电话铃声。那我们就以红绿灯为例,你为什么会认识红绿灯呢?因为在我们的小时候有人告诉过我们红绿灯的特征,红灯停,绿灯行这种理解。如何认识红绿灯呢?1.识别红绿灯 2.知道对应的灯亮了,,而。原创 2024-03-04 20:40:36 · 851 阅读 · 1 评论 -
Linux操作系统——什么叫做信号量?
在我们了解信号量之前,我们先来了解以下几个概念,在我们学习前面进程间通信的时候,我们经常说到一句话叫做,进程间通信的前提是让不同的进程看到同一份资源。多个执行流看到的同一份资源,叫做。原创 2024-02-28 21:37:42 · 937 阅读 · 1 评论 -
system V 共享内存
1.共享内存的通信方式不会提供同步机制,共享内存是直接裸露给所有的使用者的,一定要注意共享内存的使用安全问题2.共享内存是所有进程间通信速度最快的3.共享内存可以提供较大的空间原创 2024-02-23 18:17:56 · 894 阅读 · 1 评论 -
Linux操作系统——命名管道
我们前面说的管道都是只能具有血缘关系的进程进行进程间通信,如果我想让两个毫不相干的进程进行通信呢?我们前面说而如果我们如何让两个毫不相干的进程看到同一份资源呢?假设有A进程和B进程,A进程要打开一个文件,那么他要为该文件创建对应的struct file,还要创建关于该文件的一些内部对象,比如说inode,缓冲区,方法集等这些东西。然后当我们在同路径下用B进程打开这个文件,操作系统还用不用重新加载该文件的inode ,缓冲区这些东西,然后再打开了呢?原创 2024-02-15 14:40:05 · 920 阅读 · 1 评论 -
Linux操作系统——管道(二) 进程池
比如说我们一开始有一个父进程,分别创建5个管道,5个子进程,这5个子进程都向管道里面进行读取,而我们对应的父进程,因为我们前面谈过管道的4种情况里面,有一个种情况是,正常情况下,如果管道没有数据了,读端必须等待,直到有数据为止(写端写入数据了),也就是说父进程只需要向某一个管道进行写入数据,对应的子进程就会被唤醒然后去读取对应的数据,其实管道里面写入的数据除了字符串还可以是整形,因为管道是面向字节流的,当子进程拿到父进程写入的int数据,就可以根据数据的值做不同的工作了。原创 2024-02-02 22:32:20 · 898 阅读 · 1 评论 -
Linux操作系统—— 管道(一)匿名管道
如果今天该进程作为父进程创建了新的子进程,我们都知道子进程中的task_struct 中的大部分内容都是从父进程那里来的,除了PID,PPID等这些内容以外,所以子进程会将父进程管理的文件描述符表struct files_struct拷贝一份,然后由于我们这一部分都是进程创建,进程管理方面的,但是文件及其对应的0,1,2对应的键盘,显示器,显示器这些都是文件管理部分,所以这些都不会被拷贝一份,所以父子进程指向的文件描述符表中的文件都是同一个,但是文件描述符表中的内容是被拷贝了的。以读的方式打开也同上。原创 2024-02-02 15:27:25 · 921 阅读 · 2 评论 -
Linux操作系统——进程间通信简单介绍
我们之前所谈的进程很多都是通过一个进程来进行理解的,可是很多情况下有一些任务呢,他是有很多的进程通过协作完成,比如说我们之前谈到的命令行,一条命令也是用一个进程去执行的。像这样,我们是通过两条命令,也就是需要两个进程协作完成的任务。一个进程将自己执行的结果通过管道交给另一个进程进而完成这项任务的。虽然说进程具有独立性,但是有些事并不是一个进程工作就能完成的,所以进程之间是存在互相通信的,也就是进程之间可能会互相协作完成任务。要让两个进程互相通信的前提条件是得让两个进程将信息传递起来。原创 2024-01-25 15:51:37 · 347 阅读 · 1 评论 -
Linux操作系统——动静态库
下面我们创建一些文件:库中是没有main函数的,我们也不能把main函数写入我们的库中。对上述文件写如下代码:加法:减法:乘法除法:下面我们再创建一个main函数测试的文件下面我们可以对这些文件进行编译一下:在我们这里编译的时候有没有说用哪个头文件啊?其实并没有,那么为什么能够直接找到这些头文件呢?因为这些头文件是在当前目录下的,因为我们知道头文件查找要么是在当前目录下,要么是在系统的指定目录下查找的,所以头文件不用在指定的路径下带。原创 2024-01-25 15:47:53 · 925 阅读 · 0 评论 -
Linux操作系统——理解软硬链接
软链接其实就是类似于windows系统下的快捷方式,软链接内容是指向的目标文件的路径。我们除了可以直接通过这个谷歌浏览器的快捷方式来打开它,同时也可以通过该快捷方式的目标文件的路径找到这个可执行程序双击之后打开它。为什么要有快捷方式呢?原创 2024-01-22 18:08:50 · 810 阅读 · 1 评论 -
Linux操作系统——理解文件系统
到目前为止,我们所学习到的关于文件的操作,全部都是基于文件被打开,被访问,访问期间比较重要的有重定向,缓冲区,一切皆文件,当我们访问完毕的时候需要将文件关闭,关闭时那也就是将对应的文件对象进行关闭,缓冲区该刷新刷新,该释放时释放,该清空清空,可是所有的动作都是基于内存级的,对于一个文件打开这种情况的一系列操作。1.你的系统里可能有成千上万的文件,所有的文件都被打开了吗?2.一个文件被打开了有刚刚所谈的那些操作,那么一个文件被打开之前,文件在哪里呢?原创 2024-01-21 23:50:29 · 863 阅读 · 0 评论 -
Linux操作系统——缓冲区+C标准库的模拟实现
缓冲区是什么呢?我们理解的缓冲区:其实就是一部分内存。(有谁提供呢?为什么要有缓冲区呢?下面我们讲一个小故事将缓冲区引入进来。故事时刻:假设你在云南,你有一个非常好的朋友在北京,然后呢你朋友马上准备过生日了,你准备送他一个你新买的键盘,有一种方式是你自己坐火车坐飞机过了挺长一段时间才到北京去,然后走到你朋友楼下说:"我给你送的新键盘作为生日礼物。" 然后你还需要大量时间折返回学校,这种方式可不可行呢?当然可行,但是效率太低下了。原创 2024-01-19 12:19:31 · 847 阅读 · 0 评论 -
Linux操作系统——重定向
如果我们要读一个文件,那么读文件一定是由进程来读的,其中进程的PCB中包含了一个文件描述符表指针指向struct file * fd_array[]数组的一个指针,正常情况下标准输入,标准输出,标准错误三个流是默认被打开的,也就是对应着文件描述符0,1,2,所以新打开的文件一般是把新打开创建的struct file的地址填到文件描述符为3的空间里,然后将该文件描述符作为返回值传递给上层,上层拿到了文件描述符为3的文件就可以对该文件进行一系列操作了。所以一个文件被打开之后最重要的要么是内容,要么是属性。原创 2024-01-15 23:01:58 · 1317 阅读 · 1 评论 -
Linux操作系统——文件详解
首先,当我们在磁盘创建一个空文件时,这个文件会不会占据磁盘空间呢?答案是当然会占据磁盘空间了,因为文件是空的,仅仅指的是它的内容是空的,但是该文件要有对应的文件名,文件的大小,文件的创建时间,文件的权限等等,这些叫做文件的属性,是一个往往被人们所忽略的非常关键的一个点,所以我们都说文件=内容+属性。1.所有对文件的操作,无非就两种操作:a.对内容做操作 b.对属性做操作。原创 2024-01-15 20:28:40 · 1168 阅读 · 0 评论 -
Linux操作系统——进程控制(三) 进程程序替换
其实我们前面就说过,父进程创建子进程之后,代码和数据是共享的,如果父子进程中有一个进程需要修改数据的话那么会发生写时拷贝,那么我们上面又说程序替换是将进程的代码和数据进行替换的,那么一旦替换父子进程的代码和数据都会被替换,但是我们这里仅仅只是子进程发生程序替换,父进程不需要发生程序替换,所以这种情况不存在。因为当我们进行程序替换时,我们并没有增加或减少或改变进程的pid,进程的pcb并没有发生改变,发生改变的只是进程PCB中通过进程地址空间通过页表映射到对应物理内存的代码和数据。我们发现程序替换成功了。原创 2024-01-11 00:09:41 · 825 阅读 · 2 评论 -
Linux操作系统——进程控制(二) 进程等待
"然后你把电话一挂,挂了之后呢,你又闲着没事干,然后又玩了玩手机,给家里面打了个电话,聊了会天,打了会游戏,你发现小张还没下来,又继续打电话:"小张,你还没好呢嘛?这段代码一开始是父进程子进程一起跑,而子进程只会跑前五秒,所以前五秒的时候子进程一定是S状态或者R状态,5秒过后子进程退出,退出之后,父进程后面sleep5秒之后子进程会变成僵尸状态,我们对应的父进程10s后会打印出上述代码那句话,打印出来之后,那么子进程的僵尸状态就消失了。一般而言,父子进程谁先运行我们是不知道的,但是一般都是父进程最后退出。原创 2024-01-10 16:37:04 · 2005 阅读 · 3 评论 -
Linux操作系统——进程控制(一) 进程创建和进程终止
在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。返回值:自进程中返回0,父进程返回子进程id,出错返回-1当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。但每个进程都将可以开始它们自己的旅程,看如下程序。这里看到了三行输出,一行before,两行after。进程43676先打印before消息,然后它有打印after。另一个after消息有43677打印的。原创 2024-01-05 18:25:39 · 966 阅读 · 1 评论 -
Linux操作系统——进程(六) 进程地址空间
所以我们除了要对这些员工进行管理我们,还要对我们画的饼进行管理,那么操作系统要对我们的进程进行管理同样的也要对进程的进程地址空间进行管理,那么如何管理呢?一样的,先描述在组织。进程地址空间最终一定是一个内核数据结构对象,其实就是一个内核结构体。原创 2023-12-27 23:46:18 · 1669 阅读 · 8 评论