linux
&罗毅
灵机一动即是天机
展开
-
系统编程思维导图
原创 2019-12-08 17:19:55 · 443 阅读 · 0 评论 -
Linux进程间通信
管道:匿名管道没有名字,因此只能通过子进程复制父进程的方式(复制文件描述符)实现通信------只能用于具有亲缘关系的进程间通信管道原理:操作系统在内核提供一块缓冲区(只要进程可以访问这块缓冲区就可以实现通信)匿名管道读写特性:管道中若没有数据,则read会被阻塞,直到读取到数据为止(有数据写入管道) 管道中若数据满了,则write会被阻塞,直到有空闲空间(有数据被读取走了) ...原创 2019-04-26 16:38:23 · 276 阅读 · 0 评论 -
linux多线程基础
线程概念:在传统操作系统中,进程就是一个运行中程序的描述信息---------pcb,控制着程序的运行: linux中并没有为线程设计一个tcb来控制线程的运行 在linux下,线程是以进程的pcb模拟实现,也就是说linux下pcb是一个线程 在linux下进程实际上是一个线程组------当中包含一个/多个线程 因为cpu调度的基本单位是pcb,所以线程是cpu调度的基本单位 因...原创 2019-05-09 22:18:29 · 130 阅读 · 0 评论 -
linux线程安全
线程安全:多个线程同时对操作临界资源而不会出现数据二义性 在线程中对临界资源进行了非原子操作 可重入/不可重入:多个执行流同时进入函数中运行而不会出现问题如何实现线程安全:同步:临界资源的合理访问 互斥:临界资源的同一时间访问互斥的实现: 互斥锁:0/1计数器 1表示可以加锁,加锁后-1 ...原创 2019-05-11 15:50:52 · 461 阅读 · 0 评论 -
生产者消费者模型(C++)
/* 手撕生产者与消费者模型 * 一个场所,两种角色,三种关系 * 场所:线程 安全的队列 */#include <iostream>#include <queue>#include <pthread.h>class BlockQueue{ public: BlockQueue(int cap = 10):_capacit...原创 2019-05-16 16:17:14 · 1535 阅读 · 0 评论 -
线程池的种类以及使用场景
线程池线程池的种类以及使用场景CachedThreadPool这类线程池的特点就是里面没有核心线程,全是非核心线程,其maximumPoolSize设置为Integer.MAX_VALUE,线程可以无限创建,当线程池中的线程都处于活动状态的时候,线程池会创建新的线程来处理新任务,否则会用空闲的线程来处理新任务,这类线程池的空闲线程都是有超时机制的,keepAliveTime在这里是有...原创 2019-05-16 23:52:06 · 8300 阅读 · 0 评论 -
select模型
高级io:五种io模型:阻塞io 非阻塞io 信号驱动io 异步io 多路转接io多路转接io模型:select poll epoll五种io模型:IO操作分为两个过程:等待+数据拷贝阻塞:为了完成功能发起调用,若当前不具备完成条件,则一直等待完成后发起调用返回非阻塞:为了完成功能发起调用,若当前不具备完成条件,直接报错返回,通常需要循环处理阻塞与...原创 2019-06-28 18:51:31 · 124 阅读 · 0 评论 -
epoll模型
poll模型 poll采用一个描述符事件结构的方式对描述符所关心的事件进行监控; 1.所关心的描述符 2.描述符所关心的事件 POLLIN (可读) | POLLOUT(可写) 3.描述符实际监控时就绪的事件 定义事件结构数组,将用户所关心...原创 2019-06-29 12:01:51 · 986 阅读 · 0 评论 -
进程信号
信号概念:信号就是一个软件中断-----通知进程发生了某件事情(打断当前操作选择,合适的时机去处理信号)信号种类: kill -l 命令查看 62种(里面有缺省) 1~31:非可靠信号(信号不会丢失),非实时信号 34~62:可靠信号(信号不会丢失),实时信号信号有生命周期:信号的产生-》信号在进程...原创 2019-04-26 16:35:32 · 84 阅读 · 0 评论 -
linux基础IO
fopen fread fwrite fseek fclose 1 /*回顾标准库IO接口*/ 2 3 #include <stdio.h> 4 #include <string.h> 5 6 int main() 7 { 8 FILE *fp = NULL; 9 fp = fopen("./tmp.txt",...原创 2019-04-12 17:14:43 · 116 阅读 · 0 评论 -
linux文件权限管理
权限命令: chmod 用户表示符 +/- = 权限字符+:增加某项权限 -: 取消某项权限 =:修改某项权限 用户符号: u: 拥有者 g: 拥有者同组用 o: 其他用户 a: 所有用户#chmod o+wx ./test#chmod g-r ./test#chmod g=r ./...原创 2019-03-14 21:51:52 · 108 阅读 · 0 评论 -
linux 下常用工具
Vim: vim是类似于vi的著名的功能强大的,高度可定制的的文本编辑器,在vi的基础上改进和增加了很多特性,是一个自由软件,其在代码补全,编译错误跳转等编程的功能特别丰富,在程序员中被广泛应用。 普通模式:完成普通的基本命令 插入模式:向文件中插入数据 底行模式:退出/保存编辑 vim设置 模式切...原创 2019-03-30 13:56:40 · 102 阅读 · 0 评论 -
minishell的实现
所谓程序替换就是替换程序所运行的代码,将另一段程序加载到内存,通过页表改变原来的映射关系,重新建立到新程序内存的地址,相当于替换了进程所运行的程序以及所要处理的数据exec函数族迷你shell实现 1 #include<stdio.h> 2 #include<errno.h> 3 #include<unistd.h> ...原创 2019-04-05 16:21:19 · 244 阅读 · 0 评论 -
操作系统调度算法(详解)
调度类型:长程调度:决定加入到待执行的进程池当中 中程调度:决定加入到哪一部分或全部在主存中进程的集合中 短程调度:决定哪一个可用进程将被处理器执行 I/O调度:决定哪一个进程挂起的I/O请求将被可用的I/O设备处理调度策略:w:花费等待的时间e:到现在为止执行所用的时间s:进程所需要的总的服务时间决策模式:(选择函数在执行的瞬间处理方式)抢占:当前运行的...原创 2019-04-06 16:45:32 · 5114 阅读 · 2 评论 -
虚拟存储器
物理和虚拟寻址:计算机系统的主存被描述成一个有M个连续的字节大小的单元组成的数组,每一个单元都有一个唯一的物理地址 使用虚拟地址寻址时,cpu通过生成一个虚拟地址空间来访问主存,这个虚拟地址空间在被送到存储器之前转换为适当的物理地址。将虚拟地址转换为物理地址的任务叫做地址翻译,地址翻译需要cpu和操作系统的紧密合作。cpu芯片上叫做存储器管理单元...原创 2019-04-01 23:23:05 · 262 阅读 · 0 评论 -
Linux进程控制
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.#include<stdio.h>#include<unistd.h>void Func(char* arg){ printf("%s,c...原创 2019-04-12 14:54:29 · 117 阅读 · 0 评论 -
进程的基本概念
进程 1.进程在操作系统中叫做 PCB (进程控制块) 2.在linux下是用task_struct这样的结构以保存的,所有进程信息都以task_struct结构体在内核中以链表的形式存储。(它会被加载的内存当中并且包含着进程的信息)task_struct标示符: 描述本进程的唯一标示符,用来区别其他进程。 状态: 任务状态,退出代码,退出信号等。 优...原创 2019-04-03 14:02:16 · 178 阅读 · 0 评论 -
Linux下的环境变量
现代操作系统中用来指定操作系统运行环境的一些参数常见的环境变量:PATH:指定命令的搜索路径 HOME:指定用户的工作目录 SHELL:当前shell,它的值通常是/bin/bash.查看环境变量的方法env(显示所有环境便量)set(显示系统环境变量和本地定义的shell变量)export(设置环境变量)unset(删除环境变量)echo $NAME...原创 2019-04-03 14:51:25 · 120 阅读 · 0 评论 -
linux 常用指令
1.目录相关指令:命令格式:命令名称 [选项参数] [操作对象]ls:列出当前目录下的目录文件列表信息 -a 显示隐藏文件 linux下以 . 开头的是隐藏文件 -l 显示当前目录下的目录文件信息 pwd 显示当前所在的绝对路径: 绝对路径: 以根目录为起始的路径 相对路径:以当前路径...原创 2019-03-14 19:35:35 · 148 阅读 · 0 评论