![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
蓝海萤
这个作者很懒,什么都没留下…
展开
-
共享内存
共享内存其实是不同进程之间通过访问同一块内存进行通信。之前博客有写道共享内存的一些接口,今天用代码实践了一下,证实了一个概念,,,共享内存的生命周期跟随操作系统(破涕为笑)写端进程代码#include<stdio.h>#include <unistd.h>#include <sys/shm.h>int main(){ //创建共享内存 int shmid=shmget(IPC_CREAT,1024,IPC_CREAT|0664);原创 2020-12-03 20:45:13 · 213 阅读 · 1 评论 -
分页式、分段式、段页式
分页式:页号+页内偏移,通过页号找到块号,通过块号,算出块的起始地址,最后块的起始地址+页内偏移分段式:段号+段内偏移 通过段号找到段的起始地址,然后段的起始地址+段内偏移段页式:段号+页号+页内偏移 先通过段号找到页的起始地址,通过页表当中的页号找到对应的块号,再通过块号计算出起始地址,块的起始地址+页内偏移...原创 2020-08-16 15:51:14 · 4136 阅读 · 0 评论 -
多线程(二)
这里写目录标题线程安全与重入1. 概念2.常见的线程不安全情况3.常见的线程安全情况4.常见的不可重入情况5.常见可重入的情况6.可重入与线程安全的联系7.可重入与线程安全的区别互斥锁1.定义互斥锁2.初始化互斥锁3.加锁4.解锁5.销毁互斥锁6.互斥锁加锁解锁的底层实现原理死锁什么是死锁死锁的四个必要条件避免死锁的方法线程安全与重入1. 概念线程安全:多个线程并发同一段代码时,不会出现不同的结果。对全局变量或者静态变量进行操作,并且在没有锁保护的情况下,会出现线程安全的问题重入:同一个函数被不同原创 2020-05-29 16:45:15 · 404 阅读 · 0 评论 -
多线程(一)
多线程线程的概念线程优缺点线程的独有和共享多线程和多进程的区别创建线程线程终止线程等待线程分离线程的概念在程序里一个执行路线叫做线程,线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质时在进程地址空间运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流对于linux内核而言,没有线程的说法,内核对于创建线程而言就是创建一个轻量级进程(L原创 2020-05-24 21:46:57 · 214 阅读 · 0 评论 -
进程间通信(二)
目录命名管道system v共享内存消息队列命名管道1 .命名管道是具有标识符的管道,内存当中开辟的内存是由标识的,不同的 进程可以通过名字访问命名管道2.创建命名管道使用命令进行创建mkfifo [命名管道的文件名称] 文件类型是p,p代表是管道文件使用函数创建命名管道mkfifi(char* pathname,mode_t mode)mode:指定创建出来的命名管道的读写权...原创 2020-05-06 17:50:00 · 148 阅读 · 0 评论 -
Linux --进程间通信(一)
进程间通信:管道(数据传输) 共享内存(数据共享) 消息队列(数据传输) 信号量(进程控制)进程间通信产生的目的:每一个进程都拥有自己的独立的虚拟地址空间和页表结构,促使了进程独立,导致了进程与进程之间相互协作的问题为了解决这个问题产生了进程间通信进程间通信的种类:1.数据传输2.数据共享3.进程控制管道:匿名管道和命名管道匿名管道:什么是管道:管道就...原创 2020-04-21 16:29:52 · 282 阅读 · 0 评论 -
基础IO
C文件的接口FILE * fopen(const char * path,const char* mode)打开文件出错则返回空FILE: 返回值是文件流指针path: 需要打开哪一个文件,可以带路径,如果不带路径,则在当前的目录下寻找mode:r:以读方式打开,如果当前打开的文件不存在则报错r+:以读写方式打开,如果当前打开的文件不存在,则报错w:以写方式打开,如果文件不存在...原创 2020-04-08 17:00:17 · 163 阅读 · 0 评论 -
再识从预处理到链接
预处理阶段test.c----->test.igcc -E test.c -o test.i展开头文件进行宏替换去注释条件编译编译阶段进行语法语义检测,将文本文件test.i翻译成test.s的汇编程序gcc -S test.c -o test.s汇编阶段(生成机器可执行的代码)汇编器将test.s翻译成机器语言指令,把这些指令打包成一种叫做可重定位目标程序的格式,...原创 2020-03-25 22:58:33 · 139 阅读 · 0 评论 -
进程概念(二)
1.fork初始fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同...原创 2020-03-17 17:47:21 · 184 阅读 · 0 评论 -
进程描述(一)
操作系统是什么操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。设计OS的目的与硬件交互,管理所有的软硬件资源为用户程序(应用程序)提供一个良好的执行环境如何理解管理管理=描述+组织...原创 2020-03-06 22:57:13 · 264 阅读 · 1 评论 -
Linux 编辑器和调试器的使用
编译器gcc/g++的使用格式: gcc 选项 要编译的文件 选项 目标文件1.预处理(进行宏替换)预处理功能主要包括 宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。eg: gcc -E hello.c -o hello.i选项“-E”,作用是让gcc在预处理结束后停止编译过程。选项“-o”是指目标文件,“i”文件为已经过预处理的C原始程序。2....原创 2020-03-04 16:36:47 · 209 阅读 · 0 评论 -
Linux基础指令篇(一)
1.ls指令功能:ls对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。-a 列出目录下的所有文件,包括以.开头的隐含文件-d 将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录-i 输出文件i节点的索引信息。如:ls -ai 指定文件-k 以k字节的形式表示文件的大小。例如ls -alk 指定文件-l 列出文件的详细信息...原创 2020-03-03 19:56:54 · 262 阅读 · 0 评论