Linux/网络相关
Linux/网络相关知识点
xiaofenzhao
这个作者很懒,什么都没留下…
展开
-
来看看共享内存是如何删除的吧
ipcrm [-m -s -q] shmidvoid* shmat(int shmid,const void* shmaddr,int shmflg)shmid:创建共享内存返回的句柄shmaddr:置空—映射首地址由操作系统分配shmfg:映射成功后的操作权限SHM_RDONLY 只读O 默认可读可写返回值:映射首地址 失败:(void*) -1解除映射:shmdt(const void* shmaddr)删除:int shmctl(int shmid,i原创 2020-06-17 17:39:08 · 943 阅读 · 0 评论 -
一起来学习共享内存吧
共享内存: 是所有进程间通信最快的一种,因为共享内存直接通过虚拟地址映射访问物理内存,而其他方式因为都是内核中的缓冲区,因此通信时都会涉及用户态与内核态之间的两次数据拷贝。因此通信速度最快。为什么最快?(从各个进程间通信方式的原理说起) 少了两次数据内存拷贝 内核-》用户-》内核共享内存的原理通过将同一块内存映射到自己的虚拟地址空间,实现对相同的一块物理内存进行操作,通过这种方式实现多个进程间的数据共享功能,因为共享内存是直接通过虚拟地址操作内存实现共享,相较于其他方式,少了两步用户态、内原创 2020-06-17 17:33:00 · 192 阅读 · 0 评论 -
关于管道你需要知道的
**管道原理**:操作系统在内核提供的一块缓冲区(只要进程能够访问到这块缓冲区就可以实现通信)创建管道时,操作系统会提供两个操作句柄(文件描述符),其中一个用于从管道读取数据,一个向管道写入数据子进程通过复制父进程的方式,获取到管道的操作句柄,进而实现访问同一个管道通信匿名管道:内核中的缓冲区没有明确标识符,其他进程无法直接访问管道,匿名管道只能用于具有亲缘关系的进程间通信,因为匿名管道在创建的时候操作系统返回了两个句柄,因此只能通过创建子进程,子进程复制父进程的方式获取到这个管道的操作句柄,原创 2020-06-17 17:29:04 · 599 阅读 · 0 评论 -
命名管道/匿名管道
命名管道/匿名管道:“有名字”则可以通过“名字”打开相同的管道进行通信,没有名字(在内核中没有明确标识)只能通过:#子进程复制父进程的方式实现通信,复制了文件描述符#匿名管道只能用于具有亲缘关系的进程间通信。只要在创建进程之前创建管道,后边的进程都可以实现通信。#命名管道可用于同一主机任意进程间通信管道原理:操作系统在内核提供的一块缓冲区(只要进程能够访问到这块缓冲区就可以实现通信)创建管道时,操作系统会提供两个操作句柄(文件描述符),其中一个用于从管道读取数据,一个向管道写入数据子进程通过原创 2020-06-12 16:36:17 · 146 阅读 · 0 评论 -
进程间通信(多种通信方式详解)
进程间通信:(IPC)进程间通信:是操作系统为用户提供的进程间通信方式及接口。进程间难道自己不能通信吗?不能。因为每个进程都有自己的虚拟地址空间,通过页表映射到物理内存中,并且在页表中进行内存访问控制,因此它是没办法访问到其他进程的物理内存的,它访问的都是自己的虚拟地址空间,因此进程间无法直接通信。因此需要操作系统来提供进程间通信方式,并且因为通信场景不同,提供的方式也有多种通信的本质:双方拥有共同的访问空间进程间通信是干什么的?进程的独立性(都有自己的虚拟地址空间)—提供一个公共的媒介是干原创 2020-06-12 16:34:23 · 229 阅读 · 0 评论 -
动态链接库:生成、使用
动态链接库:生成、使用生成:(代码打包)命名:lib是前缀 .so是后缀 中间是库名称gcc 编译过程(预处理、编译、汇编、链接)Vnew child.c 回车 Ctrl+w 跳转分屏-fpic:产生位置无关代码gcc -fpic -c child.c -o child.o编译选项gcc – share child.o vibmychild .sols -i :查看inode结点号。Inode结点号是可以用完的,每个文件都有一个inode结点,如果好多文件吧inode结点占完了原创 2020-06-12 16:32:23 · 231 阅读 · 0 评论 -
软连接与硬链接(相同点及不同点)
软链接和硬链接:目的:访问源文件ln tmp.hardln -s tmp.txt tmp.softls -i 查看一个文件的inode节点号软链接文件:是一个独立的文件(相当于一个文件的快捷方式),有自己的inode结点,软连接文件中存的是文件的路径。通过路径访问到源文件硬链接文件:与源文件共用一个inode结点,类似于源文件的别名,其实与源文件没有什么不同。区别:删除源文件,软链接文件失效,硬链接文件无影响(链接数-1);软链接可以对目录创建,硬链接不可以;软链接可以跨分区建立,硬链接不可原创 2020-06-12 16:31:00 · 1169 阅读 · 0 评论 -
文件系统及文件存储
文件系统:组织管理文件存储的系统,每一个磁盘分区都有一个系统,除了交换分区。磁盘块:4096个字节。内存大小小于等于8G交换分区一般是它的2倍,大于8G,交换分区通常与内存一样大。每个磁盘都有一个文件系统,并且可能每个磁盘系统都不相同,但是在操作系统中有一个虚拟的文件系统去统筹管理。超级块:统筹管理Inode结点位图:数据块位图:Inode表:存放inode结点数据块区:存储数据如果通过inode表和数据块区找到空闲的inode结点,就是采用inode结点位图以及数据块位图。(空闲标记)原创 2020-06-12 16:27:37 · 451 阅读 · 0 评论 -
关于内核态与用户态以及重定向
内核态与用户态:用户态如何切换到内核态?发起系统调用。fwrite write read memcpy(中间两个是系统调用)重定向:改变数据流向,将写入指定文件的数据,改变之后写入到另外一个文件重定向指的是描述符的重定向—因为描述符并没有改变,改变的是描述符所对应的文件信息(1号座位的故事)如何实现重定向:1)通过close实现2)还可以通过重定向接口实现:dup2(int oldfd ,int newfd)。 让newfd也指向了oldfd所指的文件,如果newfd本身也打开了一个文件,则关原创 2020-06-12 16:25:13 · 174 阅读 · 0 评论 -
关于文件描述符你确定不来学习一下?
文件描述符(open的返回值):进程通过struct file(结构体数组)结构体来描述打开的文件—使用了struct file*fd_array[],文件件描述符就是这个数组的下标—用户打开文件,通过系统通过file结构体描述符文件,并且 将指针添加进fd_array中,向用户返回这个文件描述信息在数组中的位置(下标),用户操作文件的时候,将这个下标传递给操作系统,操作系统通过下标找到文件描述信息进而操作文件。进程的文件描述符是有上限的。文件是存在硬盘中的,操作文件就是要操作硬盘,只是操作的位置不同原创 2020-06-12 16:23:36 · 684 阅读 · 0 评论 -
系统调用的IO接口
学习系统调用的IO接口:open write read lseek close;1)int open(const char* pathname, int flags, int mode_t mode);pathname:要打开的文件路径名flags:选项参数必选其一:O_RDONLY 只读O_WRONLY 只写O_RDWR 读写可选项O_CREAT 文件存在则打开,不存在则创建O_TRUNC 将文件长度截断为0(清空原有内容)O_APPEND 追加方式原创 2020-06-12 16:21:52 · 124 阅读 · 0 评论 -
关于基础IO部分你需要知道的
基础IO(C语言学的)标准库的IO 接口(就是文件操作):fopen ,fseek(跳转读写位置) fwrite, fread, fclose(关闭文件) fprintf, sprintffopen(file,"r ")fget():从一个文件流中读取一行数据File Fopen(const charfilename,const char* mode)mode:打开方式r:若文件存在则以只读打开,不存在报错r+:若文件存在则以读写打开,不存在报错w:若文件不存在则创建,否则清空原有内容,以只写原创 2020-06-12 16:18:51 · 111 阅读 · 0 评论 -
进程控制部分(包括自己实现minishell)
进程控制部分:面试题:创建一个进程的流程进程创建:(理解)流程: fork,vfork,clone-》复制-》修改-》创建完毕fork(具有写时拷贝)写时拷贝技术:初始阶段父进程和子进程指向的是同一个位置,只有当数据发生改变时,才给子进程重新开辟一块物理内存数据独有,代码共享的理解: 各自有各自的虚拟地址空间和页表,并且当数据发生改变时,子进程重新开辟物理内存,所以数据独有,代码段具有只读特性,代码段的数据不可更改,因此父子进程几乎一直指向同一块内存。vfork(父进程阻塞):与父进程共用同一原创 2020-06-12 16:15:39 · 246 阅读 · 0 评论 -
进程概念2
进程优先级:(主要针对cpu密集型)优先级:决定了资源的优先分配权的等级划分问: 为什么要有优先级?答:让操作系统运行的更加合理。让用户体验更好交互式进程:一旦有操作要优先处理(优先级要比较高才行)批处理进程:一直处理数据,但是对CPU要求并不是太高设置:ps -efPRI 优先级 NI nice值:PRI无法直接设置,但是可以通过设置NI值,进而调整PRI值renice -n size -p pid nice -n size ./mainIO密集型程序 :这个程序内部是大量的io操原创 2020-06-12 16:12:53 · 129 阅读 · 0 评论 -
想知道系统编程如何学习吗?(来这)
系统编程阶段:需要学哪些?进程概念-》进程控制-》基础IO-》进程间通信–》进程间通信-》进程信号-》多线程进程概念:首先要知道冯诺依曼体系结构:如果输入设备直接把数据产能送到CPU中的话,在传输数据的时候,可能要花很长时间,结果送到CPU中一下就处理好了,然后再花好长时间把数据送到输出设备,这样就是对CPU的浪费,因此,输入设备先把数据送到存储器中,CPU处理完了直接从存储器中拿数据,增大CPU的利用率。ps:硬件结构决定软件行为。操作系统:目的:让计算机更好用功能:一款搞管理的软件–管原创 2020-06-12 16:00:45 · 209 阅读 · 0 评论 -
Linux常用工具大全
Linux常用工具:yum:应用商店,管理安装,连接服务器,软件包管理工具软件安装方法:1.手动源码安装2.使用工具安装Yum list:查看可以安装什么yum list|grep gcc:过滤掉,得到你想安装的Rrdtool:安装一个可以出现图形的Yum list installed:查看已经安装的Yum源配置vim:编辑器普通模式:光标移动0Vim配置:https://www.cnblogs.com/highway-9/p/5984285.html底行: q w wq q原创 2020-06-12 15:58:13 · 478 阅读 · 0 评论 -
Linux常见命令大全
Linux命令详解 :文件类型:d:目录类型文件-:普通文件c:字符设备文件(键盘)l:符号链接文件b:块设备文件(硬盘)s:网络通信文件文件权限:linux是多用户操作(分三类)目录相关命令:ls 列出当前目录下的文件列表信息 目录:就是文件夹ls +目录名/ 浏览指定文件夹中的内容-a:显示隐藏文件-l:显示目录下文件详细信息 也可以写成ll-rwxrwxr-x. 1(链接数) test(属于哪个用户) test(用户组) 8512(文件大小) 3月 18原创 2020-06-12 15:56:28 · 104 阅读 · 0 评论