随笔分类 -  UNIX/Linux

UNIX/Linux 操作系统相关知识
摘要:17 - 高级进程间通信 Github 地址 1. UNIX 域套接字 UNIX 域套接字 用于在同一台计算机上运行的进程之间的通信 ,它可以在同一计算机系统上运行的两个进程之间传送打开的文件描述符 。 UNIX 域套接字 仅仅 复制数据 ,它们并不执行协议处理,不需要添加或删除网络报头,无需计算校 阅读全文
posted @ 2020-07-02 19:31 BrianLeeLXT 阅读(363) 评论(0) 推荐(0)
摘要:16 - 网络IPC:套接字 Github 地址 1. 网络 IPC 经典进程间通信机制 ( IPC ):管道、FIFO 、消息队列、信号量和共享存储,允许在同一台计算机上运行的进程之间通信 。 网络进程间通信 是不同计算机(通过网络连接)上的进程相互通信的机制 。(也可用于计算机内通信) 2. 套 阅读全文
posted @ 2020-07-02 17:37 BrianLeeLXT 阅读(364) 评论(0) 推荐(0)
摘要:15 - 进程间通信 Github 地址 1. 进程间通信 进程间通信 (IPC) 是进程之间相互通信的技术: 前十种 IPC 形式通常限于同一台主机的两个进程之间的 IPC ,最后两行( 套接字和 STREAMS )是仅有的支持不同主机上两个进程之间的 IPC 的两种形式 。 2. 管道 2.1 阅读全文
posted @ 2020-07-02 16:02 BrianLeeLXT 阅读(517) 评论(0) 推荐(0)
摘要:14 - 高级I/O GitHub 地址 1. 非阻塞 IO 非阻塞 I/O 使我们可以发出 open 、read 和 write 这样的 I/O 操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞 。 对于一个给定的描述符,有两种为其指定 非阻塞 阅读全文
posted @ 2020-07-02 12:13 BrianLeeLXT 阅读(479) 评论(0) 推荐(0)
摘要:13 - 守护进程 GitHub 地址 1. 守护进程 守护进程 (daemoon) 是生存期长的一种进程。常常在系统引导装入时启动,仅在系统关闭时才终止。它们是在后台运行的,没有控制终端。UNIX 有很多守护进程,它们执行 日常事务活动 。 2. 守护进程的特征 内核进程:父进程 ID 为 $0$ 阅读全文
posted @ 2020-07-01 22:43 BrianLeeLXT 阅读(291) 评论(0) 推荐(0)
摘要:12 - 线程控制 GitHub 地址 1. 线程限制 下图为与 线程操作 有关的一些 限制: 可以通过 sysconf 函数进行查询 。 2. 线程属性 可使用 pthread_attr_t 结构修改线程默认属性,并把这些属性与创建的线程联系起来。 初始化 和 反初始化: #include <pt 阅读全文
posted @ 2020-07-01 11:59 BrianLeeLXT 阅读(319) 评论(0) 推荐(0)
摘要:11 - 线程 Github 地址 1. 线程概念 典型的 UNIX进程 可以看成只有一个 控制线程 :一个进程在某一时刻只能做一件事情。有了 多个控制线程 ,就可以把进程设计成在某一时刻能够做不止一件事,每个线程处理各自独立的任务。 每个线程都包含有表示执行环境所必需的信息: 进程中表示线程的 线 阅读全文
posted @ 2020-06-30 20:43 BrianLeeLXT 阅读(326) 评论(0) 推荐(0)
摘要:10 - 信号 GitHub 地址 1. 信号 信号是 软中断 ,信号提供了一种处理异步事件的方法。 当造成信号的事件发生时,为进程 产生 一个信号(或向进程 发送 一个信号)。事件 可以是硬件异常(如除以 $0$)、软件条件(如alarm定时器超时)、终端产生的信号或调用 kill 函数。 每个信 阅读全文
posted @ 2020-06-30 16:59 BrianLeeLXT 阅读(381) 评论(0) 推荐(0)
摘要:9 - 进程关系 GitHub 地址 1. 进程组 每个进程除了有一个 进程 ID 外,还属于一个 进程组 。进程组是一个或多个进程的 集合 ,通常,它们是在同一作业中结合起来的,同一进程组中的各进程接受来自同一终端的各种信号。每一个进程组有一个唯一的 进程组 ID 。 函数 getpgrp 返回调 阅读全文
posted @ 2020-06-30 11:41 BrianLeeLXT 阅读(329) 评论(0) 推荐(0)
摘要:8 - 进程控制 Github 地址 1. 进程标识 每个进程都有一个非负整型表示的 唯一进程 ID 。进程 ID 是可复用的(延迟复用算法)。 ID 为 $0$ 的进程通常是调度进程,常常被称为 交换进程 (swapper) 。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为 系统进 阅读全文
posted @ 2020-06-29 17:55 BrianLeeLXT 阅读(432) 评论(0) 推荐(0)
摘要:7 - 进程环境 Github 地址 1. main 函数 C 程序总是从 main 函数 开始执行: int main(int argc, char *argv[]); \(argc\) 为命令行参数的数目,\(argv\) 是指向参数各个指针所构成的数组。 内核使用一个 exec 函数 执行 C 阅读全文
posted @ 2020-06-29 12:50 BrianLeeLXT 阅读(230) 评论(0) 推荐(0)
摘要:5 - 标准I/O库 Github 地址 1. 标准 I/O 库作用 缓冲区分配 以优化的块长度执行 I/O 等 使用户不必担心如何选择使用正确的块长度 标准 I/O 最终都要调用第三章中的 I/O 例程 。 2. 流和 FIFE 对象 当用 标准 I/O 库打开或创建一个文件时,使一个 流 与一个 阅读全文
posted @ 2020-06-29 01:34 BrianLeeLXT 阅读(361) 评论(0) 推荐(0)
摘要:4 - 文件和目录 1. 函数 stat、fstat、fstatat 和 lstat #inlcude <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); int fstat(int fd, 阅读全文
posted @ 2020-06-28 22:43 BrianLeeLXT 阅读(327) 评论(0) 推荐(0)
摘要:3 - 文件I/O Github 地址 1. 文件描述符 对于内核而言,所有打开的文件都通过 文件描述符 (file descriptor) 引用。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用 open 或 creat 返回的文件描述符标识该文件,将其 阅读全文
posted @ 2020-06-28 18:27 BrianLeeLXT 阅读(392) 评论(0) 推荐(0)
摘要:1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。通常将这种软件称为 内核 (kernel) 。( Linux 是 GNU 操作系统的内核 ) 内核 的接口是 系统调用 (system call) ,公用函数库 构建在系 阅读全文
posted @ 2020-06-28 12:23 BrianLeeLXT 阅读(425) 评论(0) 推荐(0)