MIT 操作系统6.S081第一章
1.1进程和内存
fork
父进程中 fork 返回 子进程的PID
子进程中 fork 返回 0
exit
exit会让当前进程停止执行并释放资源(包括内存和打开的文件)
通常:
0 表示 成功
1 表示 失败
wait
wait 系统调用并返回当前进程已退出或杀死的进程PID,并将子进程的状态复制到wait的地址
另外:
如果子进程没有退出,那wait等待子进程的退出
如果没有子级,返回-1
如果父级不关注子级的退出状态,返回0
1.2I/O与文件描述符
输入和输出称为I/O
文件描述符接口将文件,管道和设备之间的差异抽象出来,使他们看起来都像字节流
文件描述符一般来说
0.标准输入
1.标准输出
2.标准错误
而shell确保实现这一点

read
read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf
返回读取的字节数
引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。
write
write(fd,buf,n)将buf中的n字节写入文件描述符
返回写入的字节数
只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。
close
close释放一个文件描述符,使其可以被open,pipe,dup重用
新分配的文件描述符总是当前进程中编号最小的未使用描述符
fork复制了文件描述符,但是每个基础文件偏移量在父进程和子进程中是共享的。
dup
dup复制一个现有的文件描述符,返回一个引用自同一个底层I/O对象的新文件描述符。两个文件描述符共享一个偏移量
1.3管道
管道相比临时文件至少有四个优势:
首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除
其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。
第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。
第四,如果实现进程间通讯,管道的阻塞式读写比文件的非阻塞语义更高效。
MIT 操作系统6.S081第一章的更多相关文章
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- 第一章.C语言简介
C语言第一章 C语言简介 目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...
- 第一章 Android系统移植与驱动开发概述
本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...
- 【php学习】PHP 入门经典第一章笔记
第一章: php在线手册:http://php.net/manual/zh/index.php 在开始学习PHP之前,先来看一个合格的PHP程序员今后应具备哪些知识,这里只是笔者的一些总结,希望对读者 ...
- 第一章 数据库概述、MySQL的安装和配置
第一章 数据库概述.MySQL的安装和配置 1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...
- 第一章 Andorid系统移植与驱动开发概述 - 读书笔记
Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...
- Java学习笔记 第一章 入门<转>
第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...
- 《LINUX内核设计与实现》读书笔记之第一章和第二章
一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...
- PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)
主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...
- 【翻译习作】 Windows Workflow Foundation程序开发-第一章02
1.2 Windows Workflow概览 微软的Windows Workflow Foundation(简称WF)是.NET框架3.0版的一部分..NET3.0其它主要部分是Window ...
随机推荐
- SpringBoot外部配置以及优先级
SpringBoot外部配置属性值的方式有很多种,SpringBoot为这多种配置方式指定了优先级,在属性相同的情况下,优先级高的配置方式会覆盖优先级低的配置方式.当然,如果属性不相同,则这些配置 ...
- 不为人知的网络编程(十五):深入操作系统,一文搞懂Socket到底是什么
1.引言 我相信大家刚开始学网络编程中socket的时候,都跟我一样对书上所讲的socket概念云里雾里的.似懂非懂,很是困扰. 这篇文章我打算从初学者的角度,用通俗易懂的文字,跟大家分享下我所理解的 ...
- 阿里IM技术分享(七):闲鱼IM的在线、离线聊天数据同步机制优化实践
本文由阿里闲鱼技术团队书闲分享,原题"如何有效缩短闲鱼消息处理时长",有修订和改动,感谢作者的分享. 1.引言 闲鱼技术团队围绕IM这个技术范畴,已经分享了好几篇实践性总结文章,本 ...
- 即时通讯安全篇(十):IM聊天系统安全手段之通信连接层加密技术
本文由融云技术团队分享,原题"互联网通信安全之端到端加密技术",内容有修订和改动. 1.引言 随着移动互联网的普及,IM即时通讯类应用几乎替代了传统运营商的电话.短信等功能.得益于 ...
- .NET Core use NLog
Nlog 实现了 Microsoft.Extensions.Logging.ILogger. 首先Nuget下载添加引用:NLog.Extensions.Logging 在添加NLog的配置文件&qu ...
- CAS实现原理
一.什么是CAS? 在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令. 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新 ...
- 一体机场景ceph高可用介绍
本文分享自天翼云开发者社区<一体机场景ceph高可用介绍>,作者:b****n 一体机场景使用ceph开源架构作为存储系统的主体架构,原生方案支持存储数据高可用性,包括副本数可以灵活控制/ ...
- idea插件仓库连接不到网络
IDEA的插件中心连不上网 打开:设置-插件 选择:设置按钮-HTTP代理设置 勾选自动设置 输入 https://plugins.jetbrains.com/或者 http://127.0.0.1: ...
- ECharts中实现x轴中的坐标以不同间距显示的效果
1.需求描述 我们日常在使用ECharts实现曲线图或柱状图的时候,x轴上的坐标都是等距离显示的. 有时候我们可能有这个需求: x轴上的坐标距离按照对应数据的比例进行显示. 打个比方,假设x轴上有5个 ...
- 设置npm、yarn和pnpm的国内镜像地址和yarn命令相关问题
1.npm 全局设置: 输入如下命令查看镜像地址: npm config get registry 输入如下命令设置镜像地址为淘宝: // 推荐地址 npm config set registry h ...