Linux操作系统
文章平均质量分 92
小编学习Linux操作系统的经过
加油,旭杏
一名摆烂的大学生
展开
-
【Linux】线程的概念
我们在正文代码区中,全部都是串行调用的,在地址空间和地址空间上的虚拟地址本质上是一种资源,当我们在创建进程的时候,需要创建虚拟地址空间,页表,进程PCB等,需要时间和空间,比较麻烦。在Windows中,操作系统会创建线程控制块,因为线程的数量很多,所以需要先描述,在组织。有一个缺点是非常复杂。所以Linux的设计者认为进程和线程都是执行流,具有极度的相似性,没有必要单独设计出数据结构和算法,直接服用代码即可,使用进程来模拟线程。原创 2024-10-06 23:04:25 · 885 阅读 · 0 评论 -
【Linux1】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令
Linux的一些介绍和一些简单基础指令原创 2023-11-11 19:58:42 · 1951 阅读 · 65 评论 -
【Linux2】Linux的权限
在介绍完一些基本指令后,我们需要进行对权限以后一个全新的认识,比如文件的权限、目录的权限等等……原创 2024-04-01 01:00:58 · 828 阅读 · 5 评论 -
【Linux】Linux进程的概念
进程描述起来,用struct 结构体组织起来,用链表或者其他高效的数据结构。原创 2024-09-21 13:54:05 · 869 阅读 · 0 评论 -
【Linux】进程的地址空间
地址是一个很重要的名词,我们的每一个进程在内存中运行都会有若干个地址。在之前我们学习进程的时候,学过一个函数——fork(),这个函数仅仅被调用一次,却能够返回两次。这是为什么呢?那么这一篇博客将会解释这种现象——进程的地址空间。原创 2024-04-28 17:31:58 · 2584 阅读 · 55 评论 -
【Linux】进程优先级
优先级与进程的执行顺序有关,而权限与对资源的访问控制有关。两者在操作系统中扮演着不同的角色,确保系统的高效运行和安全性。原创 2024-09-21 11:03:40 · 1067 阅读 · 0 评论 -
【Linux】进程创建
在这一篇博客的主要内容是学习fork函数,了解fork函数的功能、返回值等。我们需要学会使用fork函数创建子进程。原创 2024-05-01 09:24:55 · 2143 阅读 · 45 评论 -
【Linux】进程终止
进程终止是进程控制里面的一个重要的知识,通过这一篇博客,我们可以学习到进程终止的概念,进程终止的三种情况,进程终止的退出码和退出信号,最后在来学习进程是如何进行终止的。原创 2024-05-01 21:07:14 · 1887 阅读 · 13 评论 -
【Linux】进程等待
位图(bitset)是一种常见的数据结构,常用在给一个很大范围的数(比如我之前看到一个题是有四十亿个数),判断其中的数是不是在其中。这里就要用到位图,显然这么多得数在内存中是存不下的,我们就得重新想办法。位图在索引、数据压缩有很大的应用。位图使用数组实现的,数组的每一个元素的每一个二进制位都表示一个数据,0表示该数不存在,1表示该数据存在。返回值:等待成功返回被等待进程的pid,等待失败返回-1。参数:输出型参数,获取子进程的退出状态,不关心可设置为NULL。原创 2024-05-04 12:55:37 · 1291 阅读 · 33 评论 -
【Linux】进程程序替换
学习进程替换的原理,掌握一些exec*函数的用法。原创 2024-05-05 11:58:08 · 3830 阅读 · 69 评论 -
【Linux】编写一个简易的shell
编写一个简易的shell原创 2024-05-10 17:20:11 · 1666 阅读 · 43 评论 -
【Linux】磁盘文件
了解磁盘的物理结构和存储结构,并将其存储结构进行抽象!!原创 2024-05-13 12:11:09 · 1034 阅读 · 18 评论 -
【Linux】文件系统
文件内容和文件属性是分开进行存储的。原创 2024-05-16 01:03:49 · 1108 阅读 · 7 评论 -
【Linux】文件描述符
这篇博客学习文件描述符,对文件描述符进行进一步的学习,在了解一下硬件如何与文件联系起来。原创 2024-05-18 18:36:48 · 887 阅读 · 1 评论 -
【Linux】环境变量
getenv函数用于获取环境变量的值。它的原型在头文件中定义,返回指定环境变量的字符串值。putenv函数用于设置或更改环境变量。它的原型在头文件中定义。原创 2024-09-23 17:28:57 · 1268 阅读 · 0 评论 -
【Linux】软硬连接
这篇博客学习了软硬连接原创 2024-05-20 11:57:06 · 333 阅读 · 2 评论 -
【Linux】动态库和静态库
系统中其实有很多库,他们通常由一组互相关联的用来完成某项常见工作的函数构成。比如用来处理屏幕显示情况的函数。(ncurses库)比如:libc.so -> c库,去掉前缀lib,去掉后缀.so, .a。-lm 表示要连接libm.so或者lib.a库文件。原创 2024-09-29 23:32:34 · 484 阅读 · 0 评论 -
【Linux】管道 ---- 进程间通信
一说到管道,我们可能想到的是下水道的管道,但是这里讲的管道是计算机中的管道,在详细一点,是Linux操作系统中的管道,那么管道到底是什么呢??管道技术还是比较重要的,我们每天都可以用到。在计算机中,由于进程之间是相互独立的,信息无法进行交互。而计算机中的管道,就是一种解决进程间信息交互的手段。原创 2024-04-23 21:34:30 · 4019 阅读 · 65 评论 -
【Linux】命令管道
之前的管道博客中介绍的是匿名管道,这个管道的应用的一个限制就是只能在具有公共祖先(具有亲缘关系)的进程间通信。如果我们不想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,他经常被称为命名管道。命名管道是一种特殊类型的文件。原创 2024-10-02 16:49:15 · 928 阅读 · 0 评论 -
【Linux】System V 共享内存
两个进程,操作系统在内存空间中创建一个共享内存。在之前学习库的时候,有一个共享库的概念。我们可以按照其概念来了解共享内存的概念:将共享内存映射到页表中,和进程的地址空间建立联系。我们可以将共享内存的虚拟地址交给用户。两个进程之间就可以通过虚拟地址找到同一个共享内存进行通信。原创 2024-06-02 14:49:06 · 1334 阅读 · 1 评论 -
【Linux】System V 信号量
由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。在进程中涉及到互斥资源的程序段叫临界区。原创 2024-06-02 12:42:05 · 895 阅读 · 1 评论 -
【Linux】System V 消息队列(不重要)
msgctl函数的参数与释放共享内存时使用的shmctl函数的三个参数相同,只不过msgctl函数的第三个参数传入的是消息队列的相关数据结构。注意: 该结构当中的第二个成员mtext即为待发送的信息,当我们定义该结构时,mtext的大小可以自己指定。msgget函数的第二个参数,与创建共享内存时使用的shmget函数的第三个参数相同。消息队列创建成功时,msgget函数返回的一个有效的消息队列标识符(用户层标识符)。第二个参数msgp,表示获取到的数据块,是一个输出型参数。原创 2024-06-02 14:55:09 · 460 阅读 · 1 评论 -
【Linux】信号
函数的原型:设置某一信号的对应动作signum:指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信号。handler:描述了与信号关联的动作,它可以取以下三种值:SIG_IGN 这个符号表示忽略该信号。SIG_DFL 这个符号表示恢复对信号的系统默认处理。不写此处理函数默认也是执行系统默认操作。sighandler_t类型的函数指针此函数必须在signal()被调用前申明,handler中为这个函数的名字。原创 2024-06-04 13:48:33 · 1255 阅读 · 8 评论 -
【Linux】线程池
线程池是一种线程使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。原创 2024-06-23 20:55:12 · 949 阅读 · 0 评论 -
【Linux】线程的互斥
大部分情况下,线程使用的数据都是局部变量,变量的地址空间在线程栈空间中,这种情况下,变量归属于单个线程,其他线程无法获得这种变量。但是有的时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完成线程之间的交互。多个线程并发的操作共享变量,会带来一些问题。原创 2024-06-08 17:33:05 · 959 阅读 · 1 评论 -
【Linux】线程控制
我们如何通过函数对线程进行控制原创 2024-06-07 01:05:08 · 956 阅读 · 1 评论 -
【Linux】线程同步
线程同步:介绍基于阻塞队列的生产者消费者模型和基于环形队列的生产者消费者模型原创 2024-06-21 10:39:30 · 814 阅读 · 0 评论 -
【Linux】多线程的相关知识点
多线程的相关知识点,:线程安全,死锁,线程同步,单例模式,读者写者模型原创 2024-06-24 13:39:31 · 778 阅读 · 0 评论 -
【Linux】网络基础
独立模式:计算机之间相互独立网络互联:多台计算机连接在一起。完成数据共享局域网LAN:计算机的数量更多,通过和连接在一起广域网WAN:将远隔千里的计算机连接在一起广域网和局域网只是一个相对的概念,比如,我们有一个“天朝特色”的广域网,也可以看做一个比较大的局域网。原创 2024-06-25 15:17:50 · 859 阅读 · 0 评论 -
【Linux】网络编程套接字
在IP数据报的头部中,有两个IP地址,分别叫做和。源IP地址和目的IP地址是网络通信中常用的两个概念,他们代表了通信中的两个节点。源IP地址是指发起通信的节点的IP地址,它标识了通信的发送方。在网络通信中,源IP地址用于识别数据包的来源,以便目的节点能够将恢复发送给正确的位置。目的IP地址是指接收通信的节点的IP地址,它标识了通信的接收方。在网络通信中,目的IP地址用于指定数据包的目的地,以便网络设备能够将数据包传递到正确的位置。原创 2024-06-26 15:04:10 · 1087 阅读 · 0 评论 -
【Linux】网络编程——TcpServer
相比于之前所学习的UDP,TCP是较为麻烦一下的,因为TCP协议比UDP协议要难一点,而且TCP需要先建立一条连接才能继续通信,而UDP是直接进行通信。原创 2024-09-04 21:22:47 · 1021 阅读 · 0 评论 -
【Linux】应用层自定义协议与序列化
在应用层中,我们解释了序列化和反序列化的操作,接下来,我们需要将请求和响应进行封装。根据我们自定义协议来进行序列化。下面,我们就以一个有关计算器的请求和响应的数据结构,原创 2024-09-04 23:12:22 · 1491 阅读 · 0 评论 -
【Linux】自定义协议与序列化和反序列化
将OSI七层模式与TCP/IP分层模式进行对比,我们会发现TCP/IP分层模型将会话层、表示层与应用层合并为一层。因为应用层必须要在用户层完成,用户决定了与谁构建连接,用户决定了采用什么样的报文格式以及协议,用户决定了采用什么服务。原创 2024-09-06 08:51:27 · 1067 阅读 · 0 评论 -
【Linux】应用层http协议
HTTP协议的相关内容原创 2024-09-09 00:21:07 · 1275 阅读 · 0 评论 -
【Linux】HTTP协议中的cookie和session
HTTP Cookie(也称为Web Cookie,浏览器Cookie或者简称为Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。通常,它用于告知服务器两个请求是否来自同一个浏览器,如保持用户的登录状态。记录用户偏好等。一般分为内存级和文件级Cookie。HTTP Session是服务器用来跟踪用户与服务器交互期间用户状态的机制。原创 2024-09-09 00:25:17 · 1051 阅读 · 0 评论 -
【Linux】传输层协议——UDP
端口号(Port)标识了一个主机进行通信的不同的应用程序。在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组来标识一个通信(可以通过netstat -n查看)。netstat -n一个进程是否可以bind多个端口号?可以的,因为在一个进程中,我们可以使用TCP套接字,也可以使用UDP套接字,两个套接字可以分别bind在同一个进程中。一个端口号是否可以被多个进程bind?不可以,因为不满足一个端口号对应一个进程的原则。原创 2024-09-08 12:02:49 · 1207 阅读 · 0 评论 -
【Linux】网络层协议——IP
在前面,我们学习了应用层和传输层,接下来,我们来学习网络层,网络层的主要功能是在复杂的网络环境中确定一个合适的路由。原创 2024-09-12 17:17:44 · 1486 阅读 · 0 评论 -
【Linux】数据链路层
数据链路层的功能是:用于两个设备(同一种数据链路节点)之间进行传递。原创 2024-09-13 11:18:52 · 1128 阅读 · 0 评论 -
【Linux】NAT
之前,我们就讨论了在IPv4协议中:IP协议数量不充足的问题。NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能。对,现在路由器不仅可以工作到网络层,也可以工作到应用层。原创 2024-09-13 18:04:55 · 724 阅读 · 0 评论 -
【Linux】代理服务器
正向代理是一种常见的网络代理方式,他位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接受客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这个方式,正向代理可以实现多种功能,比如提高访问速度,隐藏客户端身份,实施访问控制等。原创 2024-09-13 18:56:58 · 761 阅读 · 0 评论