本章预热与后续系统编程有关的概念。

术语“操作系统”通常包含2种含义:一是指完整的软件包,包括管理计算机资源的核心组件,已经附带的标准软件;二是独指管理硬件的内核。

内核具有诸多概功能,包括:

  • 进程管理
  • 内存管理
  • 文件系统支持
  • 设备管理

在内核的管理下,操作系统会给每个用户营造一种抽象:虚拟化,即使得每个用户感觉自己在独占机器。

内核通过硬件将CPU分为2种状态,一种是用户态,又称目态;另一种是核心态,又称管态。两者区别是对CPU的限制,前面一种有很大限制,后一种无限制。

操作系统的一切活动都掌控在内核的控制下,在后面的编程过程中,需要使用内核角度来看到程序。程序要完成的很多功能,都是借助于内核的。例如,进程创建子进程,也是当前进程向内核请求,然后内核为其创建子进程,而不是进程自身的功能。甚至是程序的结束也不能由自身掌控,也是内核来控制的,程序告诉内核需要终止,内核进行终止工作,程序才能结束,否则不允许结束。

shell用来进行人机交互和命令解释,其实它是一个进程,是有系统创建的,shell中执行命令相当于C/C++中的函数调用,只不过shell是每执行一个命令时,创建出一个子进程,并复制一份当前的环境给子进程,然后在子进程中执行命令程序,完毕后销毁自身环境进行返回。所以shell脚本中导入的变量只对shell创建出的子shell进程有效,一旦返回就丢弃了,使用source命令来使得脚本在当前shell进程中进行执行。

Unix使用用户和组来对用户身份进行标识

Unix的文件系统是使用单根目录结构来维护的。

文件分为多种类型,包括:普通文件,设备文件,目录文件,管道文件等等。

文件系统中的文件目录有绝对和相对之分。

文件有所有权和文件名。

Unix系统提供文件I/O,Unix的文件I/O是通用的,也即文件I/O可以适用于所有文件类型,包括普通文件,设备文件,套接字文件。通用文件I/O屏蔽了下层的复杂细节,只要用同一套文件I/O就能处理任何类型文件。

本质上,内核只提供一直文件类型:字节流序列。

Unix系统没有文件结束符的概念,当读取文件时无数据返回,便认为文件结束。实际实现中,Linux是具有文件结束符的。

程序和进程:进程是程序在内存中的活动实体抽象。

进程分为两部分,一部分在用户内存空间,由程序使用;一部分在内核用户空间,有内核管理进程使用。

内存映射分为两种:文件映射和匿名映射。

程序库也分为两种:静态库和动态库。

信号:Unix中用来通信和同步的一种方法。

/proc文件系统,部分Unix有实现,Linux也实现了该特性。

以上是后面将涉及到的概念,后面将具体学习。

Linux/Unix系统编程手册 第二章:基本概念的更多相关文章

  1. Linux/Unix系统编程手册 第一章:历史和标准

    Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的.这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂. 由 ...

  2. 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll

    关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...

  3. 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍

    关键词: 1. socket基础 一个典型的客户端/服务器场景中,应用程序使用socket进行通信的方式如下: 各个应用程序创建一个socket.socket是一个允许通信的设备,两个应用程序都需要用 ...

  4. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  5. 《Linux/Unix系统编程手册》读书笔记6

    <Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...

  6. 《Linux/Unix系统编程手册》读书笔记5

    <Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...

  7. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

  8. 《Linux/Unix系统编程手册》读书笔记4

    <Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...

  9. 《Linux/Unix系统编程手册》读书笔记3

    <Linux/Unix系统编程手册>读书笔记 目录 第6章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此 ...

随机推荐

  1. 怎样使用ADO中的UpdateBatch方法(200分)

    诸位: 我在使用ADO组件(ADOQuery.ADODataSet)的BatchUpdate模式时,系统竟不认识UpdateBatch.CancelBatch方法.这是怎么回事?我的运行环境是Win2 ...

  2. [洛谷P5216]DLS 采花

    题目大意:有$n$个数,任意排列,排列后第$i$个数会产生贡献当且仅当$1\sim i-1$中的数不是它的因子,问所有排列的贡献和 题解:发现一个数要产生贡献要求所有它的因子在它的右边,设有$cnt_ ...

  3. 九省LNOI2018退役记

    立个flag不会退役. Day 0: 水一发. 大连大学的键盘敲起来就跟敲纸似的. 膜拜要进队的gqh,yxd,sjq. (都进啦2333) (高斯消元,高原反应,分麾下治……) 给我这只弱鸡烧根香. ...

  4. 解题:HEOI 2016 求和

    题面 我们需要知道这样一个东西(大概叫 斯特林公式?) $S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^k C_j^k(j-k)^i$ 那么就是推啊 $=\ ...

  5. C#线程篇---解答线程之惑(2)

    我们都知道,在这个行业,追求的就是用最少的时间学最多的知识,这是我写这个系列最想达到的目标,在最快的时间内,帮助更多的人学习更多的线程知识. 前一篇,讲述了线程基础,给大家铺垫了一个基础,这一篇着重介 ...

  6. Python Opencv 色彩平衡

    在平衡良好的照片中,最亮的颜色应该是白色和最暗的黑色. 因此,我们可以通过缩放每个R,G和B通道的直方图来移除图像中的色偏,使得它们跨越完整的0-255比例 网上只有C的代码 修改为Python代码 ...

  7. D65光源

    D65光源是标准光源中最常用的人工日光,其色温为6500K.英文名:Artificial Daylight 6500K.标准光源箱中的D65光源是模拟人工日光,保证在室内.阴雨天观测物品的颜色效果时, ...

  8. P1776 宝物筛选_NOI导刊2010提高(02)&& 多重背包二进制优化

    多重背包, 要求 \(N\log N\) 复杂度 Solution 众所周和, \(1-N\) 之内的任何数可以由 \(2^{0}, 2^{1}, 2^{2} ... 2^{\log N}, N - ...

  9. 安装SQL Sever数据库失败的解决办法

    视频链接:https://www.bilibili.com/video/av12651739/ 我安装了SQL Sever2014.遇到了好多好多问题啊,整的我都快疯了.大致遇到的问题和解决办法如下. ...

  10. HTTP协议(4):CGI

    CGI接口原理及实现(2012-12-7 Over) 1.CGI定义: CGI(CommonGateway Interface)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须 ...