
Linux系统编程
文章平均质量分 84
主要内容包括Linux基本操作、Shell编程、系统I/O编程、文件系统、进程控制原理、多进程并发编程、信号机制、线程概念、多线程并发编程、同步与互斥的概念、基于信号量与P/V操作解决同步及互斥问题、经典同步问题、网络编程、并发网络应用编程等。
Eiker_3169
烂笔头下的C/C++
展开
-
【Linux系统编程】
系统编程就是利用操作系统提供的系统调用(system call,即所谓的接口、函数)进行编程,以达到操作各种计算机硬件资源(如磁盘、终端、网络等)的目的。原创 2022-09-27 20:37:51 · 1973 阅读 · 1 评论 -
【Linux系统编程(一)】Shell基础
shell本质是脚本文件:完成批处理。shell是软件也是语言。 软件:shell命令解析器:(sh、ash、bash),将脚本文件逐行解析执行。原创 2022-09-28 20:43:07 · 454 阅读 · 0 评论 -
【Linux系统编程(二)】Linux文件IO操作
系统调用:就是操作系统(内核)提供给用户程序调用的一组“特殊”接口(函数接口)。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。进程的空间分为:内核空间和用户空间。原创 2022-10-05 23:21:07 · 1194 阅读 · 0 评论 -
【Linux系统编程(三)】进程
多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。进程定义:进程是指一个具有独立功能的程序在某个数据集上的一次动态执行过程,它是系统进行资源分配和调度的最小单元。线程定义:线程是进程内独立的一条运行路线,是处理器调度的最小单元,也可以成为轻量级进程。原创 2022-10-09 20:38:39 · 594 阅读 · 0 评论 -
【Linux系统编程(四)】信号
信号的概念信号是Linux进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。原创 2022-10-20 20:38:17 · 548 阅读 · 0 评论 -
【Linux系统编程(五)】文件描述符复制dup、dup2
让新的文件描述符指向旧的文件描述符(新旧文件描述符指向同一个文件)原创 2022-10-24 13:04:11 · 266 阅读 · 0 评论 -
【Linux系统编程(六)】无名管道
管道(pipe)又称无名管道。无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。原创 2022-10-24 20:34:58 · 1944 阅读 · 0 评论 -
【Linux系统编程(七)】有名管道
主要用于没有血缘关系的进程间通信。原创 2022-10-25 22:34:53 · 1020 阅读 · 0 评论 -
【Linux系统编程(八)】消息队列
消息队列是消息的链表,存放在内存中,由内核维护消息队列的特点:>1. 消息队列中的消息是有类型的>2. 消息队列中的消息是有格式的>3. 消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按消息的类型读取>4. 消息队列允许一个或多个进程向它写入或者读取消息>5. 与无名管道、命名管道一样,从消息队列中读出消息,消息队列中对应的数据都会被删除>6. 每个消息队列都有消息队列标识符,消息队列的标识符在整个系统中是唯一的>7. 只有内核重启或人工删除消息队列时,该消息队列原创 2022-10-26 20:28:14 · 610 阅读 · 0 评论 -
【Linux系统编程(九)】mmap
存储映射I/O (Memory-mapped I/O)使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应字节。于此类似,将数据存入缓冲区,则相应的字节就自动写入文件。这样,就可在不适用read和write函数的情况下,使用地址(指针)完成I/O操作。使用存储映射这种方法,首先应通知内核,将一个指定文件映射到存储区域中。这个映射工作可以通过mmap函数来实现。原创 2022-10-28 23:08:24 · 461 阅读 · 0 评论 -
【Linux系统编程(十)】共享内存
共享内存允许两个或多个进程共享给定的存储区域。共享内存的特点:1. 共享内存是进程间共享数据的一种最快的方法。一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。2. 使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥。若一个进程正在向共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读、写这些数据。原创 2022-10-28 23:27:18 · 521 阅读 · 0 评论 -
【Linux系统编程(十一)】线程
线程是轻量级的进程(LWP:light weight process),在Linux环境下线程的本质伋是进程。为了让进程完成一定的工作,进程必须至少包含一个线程。进程是系统分配资源的基本单位。线程是CPU执行调度的基本单位。线程依赖于进程,线程共享进程的资源,线程有独立的资源(计算器,一组寄存器和栈等)。进程结束,当前进程的所有线程都将立即结束 。原创 2022-10-30 19:58:42 · 322 阅读 · 2 评论 -
【Linux系统编程(十二)】互斥锁
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。原创 2022-11-01 23:30:21 · 2867 阅读 · 0 评论 -
【Linux系统编程(十三)】条件变量
与互斥锁不同,条件变量是用来等待而不是用来上锁的,条件变量本身不是锁!条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。原创 2022-11-05 15:56:58 · 263 阅读 · 0 评论 -
【Linux系统编程(十四)】生产者和消费者问题
生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。原创 2022-11-05 17:57:55 · 847 阅读 · 0 评论 -
【Linux系统编程(十五)】信号量
信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于0时,则可以访问,否则将阻塞。PV原语是对信号量的操作,一次Р操作使信号量减1,一次V操作使信号量加1。信号量主要用于进程或线程间的同步和互斥这两种典型情况。原创 2022-11-06 18:21:54 · 942 阅读 · 0 评论