
Linux操作系统
那就逆流而上吧
这个作者很懒,什么都没留下…
展开
-
linux复习----文件命令
1.more命令more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。语法:more(语法)(参数)例子://显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。more -dc file//显示文件file的内容,每10行显示一次,而且在显示之前先清屏。more -c -原创 2020-07-28 19:47:30 · 199 阅读 · 0 评论 -
VsCode远程连接Linux服务器
1.vscode连接服务器方法:方法1:安装Remote-SSH方法2:参考拍拍小站大神2.遇到的问题(1)如果Linux的服务器是桥接模式,换网络用vscode连接时注意修改配置信息(2)远程成功连接服务器之后的文件无法保存问题下图表示远程连接成功问题:修改文件后无法保存解决办法:修改要操作文件的权限即可,如修改test.cpp文件权限使其具有写权限:sudo chmo...原创 2020-04-23 13:59:12 · 4701 阅读 · 0 评论 -
内存泄漏检测工具--------valgrind
----------》在C/C++程序中,对堆区内存的申请和释放都是由程序员手工完成的,这样就很有可能出现内存泄漏问题。而内存泄漏问题难以通过一行一行的逻辑判断进行查找。在Linux系统上,我们可以通过内存泄漏检测工具valgrind检测程序是否存在内存泄漏,该工具默认已经在红帽的系统中安装了。整理valgrind工具对下几种情况的检测:1)malloc申请空间,没有free释放1.incl...原创 2020-03-01 19:16:40 · 514 阅读 · 0 评论 -
消费者生产者模式的介绍与代码实现
生产者消费者模型1.生产者/消费者问题可以描述为:两个或者更多的进程(线程)共享同一个缓冲区,其中一个或多个进程(线程)作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个进程(线程)作为“消费者”从缓冲区中取走数据。生产者/消费者模型关注的是以下几点:(1)生产者和消费者必须互斥的使用缓冲区;(2)缓冲区空时,消费者不能读取数据;(3)缓冲区满时,生产者不能添加数据。2.生产者/消费...原创 2020-05-31 17:02:59 · 358 阅读 · 0 评论 -
学习:线程同步&线程安全
线程部分一、线程同步1.互斥量(互斥锁):只有两种状态,一种是解锁状态,一种是加锁状态,如果程序尝试对一把加锁状态的互斥锁进行加锁操作,则程序会被阻塞。注意:使用时要加头文件 #include<pthread.h>练习题:主线程负责接收用户数据,函数线程将用户输入的数据全部转化为大写,存储到a.txt文件中。题目分析:(1)主线程如何将接收的数据交付给函数线程---...原创 2020-03-10 12:08:33 · 140 阅读 · 0 评论 -
学习:线程基础
一、协程、进程和线程1.协程:英文名是 Coroutine, 又称为微线程,是一种用户态的轻量级线程。协程不像线程和进程那样,需要进行系统内核上的上下文切换,协程的上下文切换是由程序员决定的。(详见博客收藏—Linux分类)2.进程:一组有序指令+数据+资源的集合。3.线程: 线程是进程内部的一条执行序列(执行流),一个进程至少包含一条线程-------main函数所代表的执行序列,称之为主...原创 2020-03-08 09:43:56 · 142 阅读 · 0 评论 -
学习:X86体系的地址映射
注意:1.MMU表示内存管理单元;2.区别虚拟内存、虚拟地址空间和交换分区概念(1)虚拟内存是计算机系统内存管理的一种技术,它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存...原创 2020-03-07 10:55:59 · 363 阅读 · 0 评论 -
学习:Linux之共享存储
涉及的书籍:《UNIX环境高级编程_第二版中文》、《操作系统精髓与设计原理第7章》一、共享内存介绍1.共享存储(共享内存)—》最快的IPC,共享存储是不属于任何一个进程的;2.管道是通过文件描述符指向内存上的空间,消息队列是通过内核对象指向内存上的空间,无论是管道还是消息队列,涉及的进程都需要维护一份数据,这就涉及拷贝操作。3.共享存储是通过指向内核空间中的内核对象所指向的内存空间实现的,...原创 2020-02-29 10:28:41 · 500 阅读 · 0 评论 -
Linux:进程间通信----》消息队列、信号量
参考书籍:《UNIX环境高级编程_第二版中文》知道相关概念:临界资源、临界区、原子操作、P V操作、进程同步/异步、进程阻塞/非阻塞一、消息队列1.概念2.相关操作函数二、信号量1.概念2.相关操作函数...原创 2020-03-11 18:11:58 · 112 阅读 · 0 评论 -
学习:Linux之管道
一、管道学习笔记二、代码(结合父子进程,子进程写数据,父进程读数据)//子进程写数据,父进程读数据#include<stdio.h>#include<string.h>#include<assert.h>#include<fcntl.h>int main(){ int fds[2]; pipe(fds); pid_t n =...原创 2020-02-29 10:29:36 · 158 阅读 · 0 评论 -
项目:Linux中su命令的实现
一、笔记二、实现命令(可能不全)//File Name: su.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<assert.h>#include <pwd.h>#include <sy...原创 2020-03-13 15:17:52 · 301 阅读 · 0 评论 -
学习:计算机组成原理、进程
一、计算机组成原理二、进程1.进程概念:运行中的程序(程序是存储在磁盘上的二进制可执行文件),进程是 一组有序指令+数据+资源的集合—》动态概念2.系统对于进程的管理–》PCB(进程控制块)。PCB进程,不断的产生,不断的结束;进程的调度—》检索注意:新建一个进程,首先是申请PCB结构,然后再加载程序。3.进程分类(1)正常运行结束的进程;(2)僵死进程;(3)孤儿进程。4...原创 2020-03-01 10:24:39 · 367 阅读 · 0 评论 -
学习:Linux文件操作
一、Linux的文件操作函数------系统调用函数1.打开普通文件函数(1)这里mode只在flag指定了O_CREAT选项后,用来指定新文件的访问权限。(2)打开方式有以下几种:(3)若函数失败返回 -1,若成功返回打开的文件标识符。2.读操作函数注意:若函数失败返回-1,若成功返回是返回实际读到的字节长度。3.写操作函数注意:若函数失败返回-1;若函数返回的值大于等于...原创 2020-02-29 10:31:52 · 126 阅读 · 0 评论 -
学习:Linux进程创建、父子进程数据共享(写时拷贝技术的使用)和父子进程文件描述符共享
1.多进程编程注意:(1)用户执行的是一份程序,但最终执行起来的可能是多个进程,多个进程是并发执行的。(2)并发执行:进程同时执行,依赖硬件(CPU)环境。2.系统调用函数 pid_t fork(void);3.题:这里输出几个A几个B??4.输出缓冲区+fork在循环中的应用5.父子进程的数据共享(进程是系统上一个独立的个体)问:(1)父进程fork之前申请的...原创 2020-03-02 16:09:19 · 629 阅读 · 1 评论 -
学习笔记:僵死进程和信号的使用
1.僵死进程2.父进程获取子进程退出状态的系统调用函数:pid_t wait(int *result);注意:(1)一个wait调用只能处理一个子进程的僵死状态;(2)wait调用会使父进程阻塞,父子进程就是一种串行运行的关系。3.信号的使用问:父进程怎么知道子进程结束?答:在子进程结束之后再调用wait处理僵死进程,这样,父子进程是并发执行的,并且还能及时处理僵死进程。...原创 2020-02-29 10:35:26 · 96 阅读 · 0 评论 -
学习:信号发送和内核实现
1.信号发送(1)信号:第一次接收到信号,调用信号处理函数hello world,并且修改信号的响应方式:默认。(2)进程如何发送:(3)在程序中如何发送一个信号?(4)实现kill命令:(5)进程给自己发送信号:2.信号的内核实现机制:...原创 2020-03-09 18:31:42 · 133 阅读 · 0 评论 -
学习笔记:进程替换和shell项目分析
1.进程替换:替换的进程所执行的指令以及所使用的数据。(指令+数据=程序)知识点:新建进程 ==》fork2.项目:mini的shell终端原创 2020-03-04 21:16:59 · 139 阅读 · 0 评论 -
复习:Linux基础命令(文件、gcc编译链接原理、makefile文件、用户管理、进程管理、VMtools安装)
一、Linux文件介绍1.Linux文件存储层次结构—》Linux没有盘符,只有一个根目录(所有的文件都是从根目录开始存储的)(1)根目录下的一级子目录:/ibn /etc /mnt /boot /usr /root /dev /lib /proc…各个目录下存什么文件要搞清楚。比如,系统命令对应的可执行文件、系统的配置文件、资源文档等在哪里存...原创 2020-03-01 10:23:04 · 191 阅读 · 0 评论