![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
Dxx_xx4
这个作者很懒,什么都没留下…
展开
-
基础IO
在学C语言时期,当我们需要对文件进行操作时,使用的是 fopen、fclose、fwrite、fread 等库函数,而这些库函数实际上是对于系统调用接口进行了一层封装,更方便我们的使用。在了解这些系统调用接口之前,我们先来认识一下这两个概念:系统调用 和 库函数。 上面的 fopen fclose fwrite fread 等都是C语言标准库当中的函数,我们称之...原创 2019-03-30 21:27:53 · 258 阅读 · 0 评论 -
进程间通信(IPC) --- 信号量
信号量(semaphore)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为 0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。Posix 信号量分为有名信号量和无名信号量(也叫基于内存的信号量)。 ...原创 2019-04-16 16:00:16 · 254 阅读 · 0 评论 -
进程间通信(IPC) --- 消息队列
消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。有足够写权限的进程可往队列中放置消息,有足够读权限的进程可从队列中取走消息。POSIX 和 system V 下的消息队列略有不同,主要体现在一下几个方面:一般来说 POSIX 的接口要比 system V 的简单,但是system V 的可已移植性更好,几乎所有的 UNIX 系统都支持 对 POSIX 消息队列的读...原创 2019-04-09 00:00:05 · 208 阅读 · 0 评论 -
进程间通信(IPC) --- 管道
什么是管道? 管道是 UNIX系统中最古老的 IPC 形式,所有的 UNIX 系统都提供此种通信机制,我们把从一个进程连接到另一个进程的数据流称为一个 " 管道 "。管道有一下两种局限性:历史上,管道是半双工的(即数据只能在一个方向上流动)。现在,某些系统提供全双工管道,但是为了最佳的可移植性,我们绝不应预先嘉定系统支持全双工管道。 管道只能在具有公共祖先的两个进程之间使用...原创 2019-04-07 22:06:00 · 246 阅读 · 0 评论 -
vfork 和 exit
vfork 对于创建一个子进程,我们最常用的就是 fork,但其实 vfork 也是用来创建子进程的,但 vfork 和 fork 的差距却是非常大的。fork 的父子进程各自拥有独立的程序地址空间,在运行时互不干扰;而 vfork 父子进程共用一个程序地址空间,一个进程修改了内存中的内容,下一次另一个进程就会读到被修改的内容 vfork 保证子进程先执行,只有当子进程调用 ...原创 2019-04-06 18:02:09 · 387 阅读 · 0 评论 -
fork到底做了什么?
在 linux 中 fork 是一个非常重要的函数,它从一个已经存在的进程中创建出了一个新进程,这个新进程称为子进程,而原进程称为父进程。为什么 fork 函数看起来像是返回了两次? 对于很多初学者来说,这是最不能理解的。的确,这只能说是看起来像,因为从汇编的层面就已经决定了栈的压栈和出栈是成对出现的,一个函数永远只会返回一次。fork 函数的返回两次只是一个表面...原创 2019-04-06 00:39:24 · 1573 阅读 · 0 评论 -
进程概念
基本概念 首先,进程是什么?我们见过的最多的解释就是进程是程序的一个执行实例,正在执行的程序等。但从根本上来看,进程实际上就是正在运行的程序所对应的一套代码以及这个程序所拥有的资源。 对于操作系统来说,要管理一个对象,就要先对这个对象进行描述,再对这个对象进行组织。对于进程,就是用 PCB 来描述的。PCB(process control block)其实就是一个叫...原创 2019-04-05 15:07:47 · 178 阅读 · 0 评论 -
linux下的动态库和静态库
库是什么?库就是将代码打包成一个文件,供程序在编译或运行时去调用,并且库中不能包含 main 函数。静态库(.a) 静态库是程序在编译链接的时候就把库中的代码链接到可执行文件中,程序执行的时候将不再需要静态库。静态库的创建// add.h#pragma onceint add(int a, int b);// add.c#include "a...原创 2019-03-31 17:24:36 · 146 阅读 · 0 评论 -
文件系统
文件系统 当我们在linux下使用 ls -l 命令时,除了文件名,还能看到文件的其他信息 这些信息称为文件的元信息,是唯一表示这个文件的信息,它们分别是:文件的权限,硬链接数,文件所有者,文件所有者的所属组,文件的大小,最后修改日期以及文件名。 下面我们来看看linux下文件在磁盘中是如何存储的。 在linux下,文件的元信...原创 2019-03-31 11:36:27 · 267 阅读 · 0 评论 -
进程间通信(IPC) --- 共享内存
关于共享内存,首先我们来看看它在地址空间里的位置: 共享内存区是最快的 IPC 形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。共享内存的创建#include <sys/mman.h>#include <sys/stat.h> ...原创 2019-04-14 22:54:05 · 343 阅读 · 0 评论