随笔分类 -  系统编程

摘要:0. 概述 共享内存允许两个或多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会成为一个进程用户空间内存的一部分,因此这种IPC 机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。 为使用一个共享内存段通常需要执 阅读全文
posted @ 2022-04-24 15:31 zju_cxl 阅读(57) 评论(0) 推荐(0) 编辑
摘要:1. 概述 信号量分为有名信号量(named semaphore),无名信号量(unnamed semaphore)。 (这里说的信号量主要是指semaphore.h中的信号量) 有名信号量由sem_open打开,无名信号量由sem_init打开. 有名信号量通过sem_unlink删除, 无名信号 阅读全文
posted @ 2022-04-18 20:55 zju_cxl 阅读(82) 评论(0) 推荐(0) 编辑
摘要:1. 概述 信号量一个计数器,用于多进程对共享数据对象的存取。 P操作: 为了获得共享资源,进程需要执行下列操作: 测试控制该资源的信号量。 若此信号量的值为正,则进程可以使用该资源。进程将信号量值减1,表示它使用了一个资源单位。 若此信号量的值为0,则进程进入睡眠状态,直至信号量值大于0。若进程被 阅读全文
posted @ 2022-04-18 16:04 zju_cxl 阅读(81) 评论(0) 推荐(0) 编辑
摘要:原子操作 追加到一个文件 追加一个文件时,不能通过lseek到末尾然后write。要用O_APPEND选项打开文件,然后直接write。 通过lseek到末尾然后write时,如果多个进程同时执行这两个操作,则会引起竞争条件 通过 O_APPEND选项打开文件,然后直接write时,内核每一次在写操 阅读全文
posted @ 2021-11-23 23:11 zju_cxl 阅读(83) 评论(0) 推荐(0) 编辑
摘要:函数lseek 使用 lseek 函数显式的为一个打开文件设置偏移量。 每个打开的文件都有一个与其关联的“当前文件偏移量”。它通常是个非负整数,用于度量从文件开始处计算的字节数。 读、写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数。 #include <unistd.h> off_t 阅读全文
posted @ 2021-11-05 11:19 zju_cxl 阅读(102) 评论(0) 推荐(0) 编辑
摘要:函数open和openat #include <fcntl.h> int open(const char* path,int oflag,.../*mode_t mode*/); int openat(int fd,const char*path,int oflag,.../*mode_t mode 阅读全文
posted @ 2021-11-05 00:11 zju_cxl 阅读(176) 评论(0) 推荐(0) 编辑
摘要:在过去的近25年时间,人们为了UNIX的标准化做出了种种努力,这使得程序在不同版本的UNIX系统之间的移植相当容易。 UNIX标准化 ISO C 1989年,C语言首个标准得到批准,即C89。次年,一个带有小改动的版本标准被批准其为C90。因此,C89和C90通常指同一种语言。 在2000年三月,A 阅读全文
posted @ 2021-11-04 19:16 zju_cxl 阅读(287) 评论(0) 推荐(0) 编辑
摘要:所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序、打开文件、读写文件、分配存储空间、提供时间等。 UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程序运行环境。这种软件有个专业术语名称:内核。因为它小且位于计算机体系的核心。如下图所示: 内核的接口 阅读全文
posted @ 2021-11-03 16:52 zju_cxl 阅读(307) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示