实现reader和writer两个进程,使它们通过共享内存交换数据。writer从标准输入读入字符串写入共享内存,reader把共享内存里的字符串打印到标准输出。 reader和writer通过信号实现同步 思路: a) reader进程将自己的PID写入共享内存的开头几个字节处,然后等待writer进程给自己发信号,收到信号就去读buf的内容并打印出来。 b) writer进程将数据写入共享内存...

1:代码实现 mmap.c 测试小程序 read.c write.c 2:基础概念: mmap映射图 VMA结构体间的关系图 3:代码解析 1)init加载时申请一段内存空间 2)实现自己的mmap函数 3)在mmap中实现对vma区域的操作接口,最重要的fault,实现缺页异常的操作,建立相应的映射关系 4)找到需要建立映射的地址,建立映射 vmf->virtual_address是进程中...

4.1 中断篇-基础知识

llinux-4.9

  

2020-05-07 06:18:42

1:概述 简介 中断是什么? 中断是cpu对系统发生某个事件做出的一种反应 为什么引入中断? 支持CPU和设备间的并行操作 中断控制模型 中断软件架构图 1:普通外设驱动代码 2:硬件无关代码 3:cpu体系架构相关代码 4:中断控制器的驱动代码 中断向量 2:中断处理机制 处理流程 1)确定中断向量号 2)通过IDTR寄存器找到IDT表的地址,再通过中断向量号找到相应的中断描述符 3)通过GDT...

1:代码实现 通过下面的vaddr_2_paddr函数即可完成虚拟地址到物理地址的转化,整体代码如下 环境:ubuntu kernel-4.4 2:过程解析 2.1:地址转化基础概念 1)段机制-线性地址 线性地址 = 段基地址+偏移 段基地址通过虚拟地址的选择符在段表中找到,但是linux通过将基地址设为0,这样就是事实线性地址等于偏移量,这样就绕过了段机制。 2)页机制-物理地址 四级转化关系...

进程间通信 常见IPC方法 管道:使用简单 FIFO:非血缘关键间 信号:开销小 共享内存:非血缘关系间 本地套接字:稳定性好 … 管道 特性 伪文件(内核缓冲区) 两个文件描述符(r/w) 数据从写端流入,读端流出 原理 内核缓冲区 环形队列 局限性 进程自己写不能自己读 数据不能反复读 单向通信(半双工) 只能用于有公共祖先的进程间 pipe函数 参数 fd2 返回值 成功:0 ...

进程 进程通信 共享内存 消息队列 信号量 无名管道 有名管道 Socket (1) 进程是资源分配的最小单位 父子进程间遵循读时共享写时复制的原则 (2) 进程状态 进程基本的状态有5种。分别为初始态,就绪态,运行态,挂起态与终止态。其中初始态为进程准备阶段,常与就绪态结合来看。 (3) linux系统调用函数 头文件:#include〈unistd〉 创建函数 fork() (调用一次返回两次...

NFS概述 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。 NFS在文件传送或信息传送过程中依赖于RPC协议,RPC远程过程调用 (R...

文章目录 Docker安装 Centos yum源安装: Ubuntu安装 阿里云一键安装脚本最新版 自定义版本下载 Docker版本选择: Docker之前没有区分版本,但是2017年推出(将docker更名为)新的项目Moby,github地址:https://github.com/moby/moby,Moby项目属于Docker项目的全新上游,Docker将是一个隶属于的Moby的子产品,而...

文章目录 基础命令 1.查看docker相关信息 2.查看版本 3.查看当前容器状态 4. 搜索nginx的镜像 5. 下载nginx的镜像 6. 查看已经下载的镜像列表 7. 进入容器后,安装基础命令: 8. 启动容器 9. 进入容器 Docker加速配置: 基础命令 1.查看docker相关信息 docker info 2.查看版本 docker version 3.查看当前容器状态 dock...

linux下安装、配置hadoop、在yarn上运行jar包,配置MapReduce历史服务器MRHistoryServer、 配置YARN日志聚集功能 上传解压 配置HAPDOOP 1、上传解压 赋予hadoop-2.7.3.tar.gz执行权限 解压到指定目录 注意: HADOOP Distributed包目录结构按照LINUX系统目录结构规范 2、 配置HADOOP -a. 配置 *-env...

一、概述

llinux系统编程

  

2020-07-10 00:07:09

一、系统编程 1、系统调用(syscalls):为了从操作系统获得服务或者资源而从用户空间向内核(系统核心)发起的函数调用。 2、调用系统调用:用户空间程序发送信号通知内核它希望调用一个系统调用。 3、API应用程序接口:软件模块之间在源代码层交互的接口 4、ABI应用程序二进制接口:在特定的架构上两个或者多个软件模块之间的二进制接口。 二、文件系统 1、普通文件:包含以线性字节数组方式组织的数据...

文章目录 Docker镜像介绍 Docker常用命令示例 Docker常用命令格式介绍及使用示例 run 在新容器中运行命令 ps 列出正在运行的容器 rm 移除一个或多个容器 logs 获取容器的日志 load 从tar存档或STDIN加载镜像 port stop 停止一个或多个正在运行的容器 kill 杀死一个或多个正在运行的容器 start 启动一个或多个停止的容器 attach exec ...

1.打开doc界面(win+r) 此处如果报错没有安装成功,可能是因为没有升级的原因 报错信息: 使用 c:\python27\python.exe -m pip install --upgrade pip命令升级一下即可 升级更新: 升级后再次使用安装命令pip install virtualenvwrapper-win 安装成功: 2.创建新的虚拟环境 如图: 3.查看是否创建成功 worko...