Linux操作系统
NTZ5bzZKdUw
这个作者很懒,什么都没留下…
展开
-
多路转接IO(select poll epoll )
1.IO类型四种典型IO:阻塞,非阻塞,信号驱动,异步IO阻塞:发起IO调用,如果IO就绪条件不满足,就一直等待非阻塞:发起IO调用,如果IO就绪条件不满足,就立即报错返回。信号驱动:定义IO信号的处理方式,然后可以处理其他的事情,等待收到IO就绪信号的时候,立即去处理IO(自己处理)异步IO:IO顺序不确定,发起IO,然后将给系统处理,最后通过信号通知进程。(交给系统处理)可读事件:一个描述符当前是否有数据可读可写事件:一个描述符当前是否有可写入的数据异常事件:一个描述符是否发生了某些异常原创 2020-09-23 00:51:20 · 141 阅读 · 0 评论 -
【Linux学习笔记】----多线程(进程/线程概念、线程控制、同步与互斥、锁、生产者与消费者模型)
1. 进程线程概念例子:工厂工人加工零件,一个工厂同时只有一个工人干活(单进程),如果需要同时加工多 个零件。1.多建厂房,一个厂房至少一个工人2.一个厂房,多招几个工人什么是进程?进程是操作系统资源分配的基本单位什么是线程线程是CPU调度的基本单位,是进程中的一条执行流,一个线程对应一个pcb,所以线程也成为轻量级进程。线程之间的独有与共享独有:栈、信号屏蔽字、errno、优先级、标识符、寄存器共享:虚拟地址空间、文件描述符、信号处理的回调函数,用户ID/组ID/工原创 2020-09-06 17:44:07 · 207 阅读 · 0 评论 -
【Linux学习笔记】----生产者与消费者模型(基于信号量实现,基于互斥锁条件变量实现)
1.基于条件变量和互斥锁代码展示/*================================================================ * Copyright (C) 2020 Sangfor Ltd. All rights reserved. * * 文件名称:productor_customer.cpp * 创 建 者:caofeng * 创建日期:2020年09月05日 * 描 述:生产者消费者模型 * ======原创 2020-09-06 17:42:46 · 258 阅读 · 0 评论 -
【Linux学习笔记】----进程信号(分类、相关函数)
1.分类概念信号是一个软中断,用于实现进程事件的通知,打断当前操作,去处理这个事件产生硬件:ctrl+ z(停止)/ctrl+c(退出)/ctrl+|软件:kill -signum pid、kill(pid,signum)、raise(signum)、abort()给自己发送SIGABRT信号alarm(seconds)定时器给自己发送SIGALRM信号分类非可靠信号:1-32号可靠信号:34-64号注册向pcb中的sigqueue中添加新结点,并且修改pendin原创 2020-08-24 00:13:41 · 156 阅读 · 1 评论 -
【Linux学习笔记】----进程间通信(管道(命名管道,匿名管道)、共享内存、消息队列、信号量机制)
1.管道管道本质:管道是内核中的一块缓冲区,用于实现进程间的通信通信过程需要用户态到内核态,再到用户态的情况。特性:(1).半双工通信方式,(可双向传递数据,同一时刻只能单向)(2).生命周期随进程,进程退出,管道释放。(3).以只读方式打开会阻塞,直到文件以写的方式打开,以只写的方式打开会阻塞,直到文件以读的方式打开。(4).如果没有数据,读会阻塞,如果数据慢了写操作会阻塞,管道大小(64k)(5).当所有读端被关闭时,(父子进程),写端会阻塞,当所有写端被关闭时,读端读完数据,读端会原创 2020-07-23 00:41:42 · 241 阅读 · 0 评论 -
【Linux学习笔记】----基础IO(标准库IO、系统IO、文件描述符、文件系统、动态库与静态库)
1.标准库IO所在库:stdio.h,(库函数有缓冲区,退出时要刷新缓冲区,数据才会显示出来)FILE* fopen(const char* filename, char* mode)作用:打开指定文件指定文件名:filename: “./test”操作权限:r(只读), r+(读写), w(只写), w+(读写), a(追加写),a+ (追加读写),b(二进制操作)r+和w+区别:r+文件不存在时报错返回,w+文件不存在创建,存在就清空。a追加写:不存在,创建新文件。返回值:失败返回NU原创 2020-07-21 08:11:34 · 214 阅读 · 0 评论 -
【Linux学习笔记】----minishell(C语言版)
1.流程流程标准输入输入字符,并且最后一个字符设置为\0输入解析将输入的字符读取出来,放到字符串指针数组里,进程分离与替换./minishell放到argv[0]的位置,启动程序,后面输入为的命令由于我们获取的字符时,将最后的位置\n获取了,所以置NULL。进程等待.防止子进程变成僵尸进程。2.代码展示#include<stdio.h>//printf#include<sys/wait.h>//wait#include<string.h>//原创 2020-07-17 23:51:48 · 460 阅读 · 2 评论 -
【Linux学习笔记】----进程控制(创建、终止、等待、替换)
1.进程创建头文件:unistd.hforkpid_t pid =fork(void)返回值:父进程返回子进程的进程pid,子进程返回0,出错返回-1.特点:写时拷贝,各自有各自的地址空间,不阻塞,谁先运行不一定。vforkpid_t pid =vfork(void)返回值:父进程返回子进程的进程pid,子进程返回0,出错返回-1.特点:共用虚拟地址空间,调用时阻塞父进程,防止调用栈混乱。不能使用return 退出,return在main函数中才能退出。getpid()获取调用进程的原创 2020-07-17 23:30:56 · 149 阅读 · 0 评论 -
【Linux学习笔记】----内存管理(虚拟地址空间,分页,分段,段页,页面置换算法,)
1.虚拟地址空间空间分布什么是虚拟地址空间?虚拟地址空间是程序运行时,操作系统虚拟出来的一段空间,是一个mm_struct结构体。为什么要虚拟地址空间?好处是什么?1.程序通过虚拟地址空间,通过页表,实现离散式存储,更好的利用物理内存空间。2.避免了直接访问物理内存出现的安全性问题。3.同时也使得程序可以使用更大的空间。伙伴算法伙伴算法负责大块连续物理内存的分配和释放,以页框为基本单位。该机制可以避免外部碎片。per-CPU页框高速缓存内核经常请求和释放单个页框,该缓存包含预先分配原创 2020-07-13 00:57:18 · 421 阅读 · 0 评论 -
【Linux学习笔记】-----进程相关基本概念(硬件组成,环境变量,进程调度,进程状态等)
1.硬件组成硬件组成分为五部分:输入,输出,控制器,存储器,运算器。什么是操作系统?操作系统是对计算机软硬件资源进行管理的软件。程序如何运行?程序先被编译成二进制指令集合,存储在磁盘上,当程序运行时需要被加载到内存。操作系统如何管理?先描述再管理。库函数和系统调用接口的关系?库函数是封装的系统调用接口,底层是系统调用接口。系统调用接口是操作系统向上提供的系统核心功能的接口。2.环境变量什么是环境变量,环境变量的作用。环境变量是配置系统运行参数的变量作用是让系统环境配置更加简原创 2020-07-11 23:07:19 · 150 阅读 · 0 评论 -
【Linux学习笔记】----常用工具详细使用(vim gcc gdb makefile git)
1.yumyum软件包管理工具-list 可以下载的软件包列表-install/reinstall name安装软件包/覆盖安装-remove 卸载软件包2.vim模式转换底行模式 命令行模式下 shift+ ;q 退出q!强制退出wq 保存退出wq!强制保存退出: num 跳转到指定行位置set num设置行数/ char 从前向后找 (都可以使用next到下一个位置)? char从后向前找命令行模式 esc 回到命令行模式(1)光标移动hjkl原创 2020-07-08 17:05:33 · 278 阅读 · 0 评论 -
【Linux学习笔记】----常用指令(不常用的没写)
1.目录ls显示目录下的文件和目录-1单行显示-l显示详细信息-a显示隐藏文件-t以时间排序显示-s以大小排序显示-r反向排序显示-R递归显示子目录下的所有文件pwd显示绝对路径,当前用户所在目录cd 目录进入某个目录.当前目录…/当前目录的上一个目录~ 当前用户家目录-最近访问目录mkdir 目录名创建目录-p递归创建rmdir 目录名删除目录2.文件3.查找4.权限5.打包6.其他...原创 2020-07-08 11:55:06 · 124 阅读 · 1 评论 -
【Linux学习笔记】----进度条小游戏(缓冲区刷新问题)
1.代码展示#include <unistd.h>#include<stdio.h>#include <string.h>int main(){ int i = 0; char buf[101]; memset(buf, 0 ,sizeof(buf)); while(i <= 100 ) { printf("[%-100s][%d%%]\r", buf, i); fflush(stdo原创 2020-07-08 08:57:11 · 198 阅读 · 0 评论 -
虚拟机不联网以及x-shell连接问题
1.首先你得保证你的VM是可以上网的,再去尝试x-shell和虚拟机连接。如果VM不能上网,就先看看服务里面的是否都在运行。根据网上的教程,不能上网的,很多人都是服务里面的进程被禁止运行了。2.然后再去设置net模式3.能够联网之后,输入ifconfig,把下图中的ip复制一下。4.打开X-shell,新建,复制进去,然后5.然后把用户名和密码输入,(虚拟机里面创建的用户名和...原创 2020-03-13 13:09:41 · 824 阅读 · 0 评论