linux知识点
linux
稚如初靥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程安全(互斥锁)
线程安全 (这些接口都是C库实现的) 黄牛抢票(黄牛---线程, 票 --- 临界资源) 两个黄牛抢到同一张票, 1. 线程安全指的是多个线程同时运行访问临界资源, 不会导致程序的结果产生二义性, 临界资源: 在同一时刻, 该资源只能被一个执行流所访问, 涉及临界资源的区域 --> 临界区 访问: 在临界区当中对临界资源进行非原子操作,意味着可以被打断 (原子操作是一步完成的,当前操作只有两个结果, 要不完成, 要不未开始) .原创 2020-08-20 10:09:50 · 339 阅读 · 0 评论 -
线程原理, 线程控制(线程创建, 线程终止, 线程等待, 线程分离)
什么是线程???在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行;在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流线程的优点创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多线程占原创 2020-08-20 09:58:16 · 336 阅读 · 0 评论 -
信号量 , 进程信号( 产生, 注册, 注销, 捕捉, 自定义信号处理方式, 处理, 阻塞, 重入 )
1. 信号量信号量: system V版本信号量:(并不能支持跨平台) 1. 本质: 是一个计数器(保存资源数量) + PCB等待队列(存放被阻塞的进程的PCB) 两个进程都想去访问临界资源(共享内存当中保存了一个变量shm_cout = 10), 一旦涉及 到修改变量shm_cout, 容易造成数据二义, 要访问依赖CPU, 帮我们进程A和进程B计算, A拿 着CPU去计算,先从共享内存读出变量的值, 放到寄存器当中, 寄存器 = 10, 想原创 2020-08-19 12:19:42 · 515 阅读 · 0 评论 -
管道(匿名管道, 命名管道)和共享内存
管道每个进程都拥有自己的独立的虚拟地址空间和页表结构, 所以每个进程是独立的, 进程间必须借助媒介来进行通信, 这些媒介包括管道, 共享内存 消息队列 和信号量1. 匿名管道 匿名管道(在内核中创建的这块缓冲区并没有一个标识), 但是内核会返回给我们用户两个文件描述符(fd[0]缓冲区的读端, fd[1]缓冲区的写端), 创建匿名管道的接口 int pipe(int fd[2]) fd[2] : 具有两个元素的整形数组, 包括fd[0], fd[1], 接口返回值原创 2020-08-04 23:47:02 · 1048 阅读 · 0 评论 -
ext2文件系统, 软/硬链接, 进程间通信
ext2文件系统存储数据 1. 先将文件分成不同的block块, 从Block Bitmap位图当中查找Data blocks区域当中空闲的块, 将文件存储在不同的空闲块中 2. 需要对文件分成不同的block块进行管理, 从inode Bitmap当中查找空闲的inode节点, 从inode Table获取inode 节点, 使用inode 节点描述文件存储信息, 3. 文件名称 + inode节点名称作为目录的目录项保存起来; Bitmap是获取Data bl原创 2020-08-04 23:39:02 · 300 阅读 · 0 评论 -
重定向和静态库/动态库操作
重定向和静态库/动态库操作重定向:本质: 让我们的newfd文件描述符拷贝oldfd文件描述符,然后再关闭newfd, 标准输出拷贝tmpfile 指向新的struct file标准输入, 标准输出, 标准错误各自所代表的struct file*都指向各自的struct file现在我们打开一个文件tmpfile, 会自动创建一个struct file* 同样打开一个文件 struct file将标准输入的内容重定向到我们的tmpfile当中, 让标准输出不要指向原来的struct fi原创 2020-08-04 23:26:17 · 549 阅读 · 0 评论 -
C语言的文件操作和系统调用文件操作
基础IO1. C语言中的文件操作 1.1 打开文件 FILE* fopen(const char* path, const char* mode) path: 需要打开哪一个文件的路径加文件名称(可以不加路径, 默认打开是当前路径下的文件) mode: 以什么方式打开文件, r: 以 读 方式打开, 如果打开的文件不存在, 则报错; r+: 以 读写 的方式打开,原创 2020-08-04 23:04:50 · 2554 阅读 · 0 评论 -
进程程序替换和minishell
进程程序替换的使用场景:守护进程 (服务24小时不间断运行)基本具备的条件: server可执行程序, 守护进程的程序,认知: 守护进程是由守护程序启动的, 在守护进程这个程序当中使用到了进程程序替换 + 创建子进程 + 进程间通信(判断子进程是否运行正常)守护进程创建出一个子进程, 让子进程程序替换为server可执行程序, 两个程序之间通过进程间通信来进行进程通信,守护体现在:创建子进程 + 进程间通信每隔一段时间获取一下子进程状态(时间),守护进程去获取状态, 若server可执原创 2020-08-03 19:09:54 · 197 阅读 · 0 评论 -
进程控制(1. 进程创建, 2. 进程终止, 3. 进程等待 4.进程程序替换)
进程控制:进程创建forkint fork(void): 创建子进程返回值:成功: 返回两次大于0: 返回给父进程逻辑等于0: 返回给子进程逻辑失败: 返回 -1子进程拷贝父进程的PCB;vfork:int vfork(void)功能:创建子进程创建出来的子进程拷贝部分父进程的PCB, 和父进程共用同一个虚拟地址空间; 如果父子进程同时并行运行 有可能导致调用栈混乱的问题,vfork解决方案:让子进程先运行, 子进程运行完毕后,再让父进程运行vfork函数创建子进程已原创 2020-07-30 23:52:57 · 246 阅读 · 0 评论 -
环境变量知识点
环境变量:环境变量:环境变量是用来定义系统运行环境的一些参数,比如说; 每一个用户的家目录, echo $HOME常见的环境变量: HOME(环境变量名称): 保存用户家目录的环境变量 SHELL: 保存当前使用的命令行解释器的名称 PATH: 保存可执行程序的路径的环境变量 LD_LIBRARY_PATH: 程序运行时, 依赖库文件的搜索路径的环境变量, 动态库环境变量名称 CPLUS_INCLUDE_PATH: 可以定义第三方C++头文件所在路径的环境变量常见命令: ech原创 2020-07-27 16:27:03 · 829 阅读 · 0 评论 -
进程虚拟地址
环境变量:是用来定义系统运行环境的一些参数,比如说; 每一个用户的家目录,常见的环境变量:HOME(环境变量名称): 保存用户家目录的环境变量SHELL: 保存才能当前使用的 命令行解释器的名称PATH: 保存可执行程序的路径的环境变量LD_LIBRARY_PATH: 程序运行时, 依赖库文件的搜索路径的环境变量, 动态库环境变量名称CPLUS_INCLUDE_PATH: 可以定义第三方C++头文件所在路径的环境变量常见命令:echo $[环境变量名称]: 可以查看某一个环境变量的值(内容原创 2020-07-27 17:06:26 · 399 阅读 · 0 评论 -
系统编程之进程详述
系统编程之进程的概念1. 冯诺依曼体系结构二进制: 所有数据都是按照二进制的方式进行存储内存存储: 数据都是交给存储器设备进行设备中央处理器(CPU), 存储器/内存 , 输入设备(键盘, 网卡) , 输出设备(屏幕, 网卡)2. 操作系统操作系统是一个软件操作系统 = 操作系统内核 (保存操作系统管理计算机资源的代码, 用来管理计算机软硬件资源) + 一组应用操作系统通过描述 + 组织的方式来管理操作系统的软硬件资源硬件设备 + 驱动程序(鼠标驱动) + 操作系统内核 + 系统调用 +原创 2020-07-26 22:34:04 · 308 阅读 · 0 评论
分享