Linux/Unix系统编程手册 第二章:基本概念
本章预热与后续系统编程有关的概念。
术语“操作系统”通常包含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系统编程手册 第二章:基本概念的更多相关文章
- Linux/Unix系统编程手册 第一章:历史和标准
Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的.这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂. 由 ...
- 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll
关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...
- 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍
关键词: 1. socket基础 一个典型的客户端/服务器场景中,应用程序使用socket进行通信的方式如下: 各个应用程序创建一个socket.socket是一个允许通信的设备,两个应用程序都需要用 ...
- 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)
<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...
- 《Linux/Unix系统编程手册》读书笔记6
<Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...
- 《Linux/Unix系统编程手册》读书笔记5
<Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
- 《Linux/Unix系统编程手册》读书笔记4
<Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...
- 《Linux/Unix系统编程手册》读书笔记3
<Linux/Unix系统编程手册>读书笔记 目录 第6章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此 ...
随机推荐
- 虚拟机centos 安装 redis 环境 linux 使用 java 远程连接 redis
redis官网地址:http://www.redis.io/ 最新版本:2.8.3 在Linux下安装Redis非常简单,具体步骤如下(官网有说明): 1.下载源码,解压缩后编译源码. $ wget ...
- filebeat向kafka中传输数据报WARN Failed to connect to broker DOMSDev07:9092: dial tcp: lookup DOMSDev07: getaddrinfow: No such host is known.解决方法
打开filebeat客户端所在机器C:\Windows\System32\drivers\etc目录,找到hosts文件 以记事本形式打开,在底部追加 “IP 主机名” 即可
- java与C++相比增加和缺少的特性--持续更新
缺少的特性 java值类型中没有无符号数 java没有运算符重载语法 java中没有struct和union等用户自定义值类型 java中没有虚函数的概念,所有函数默认具有虚函数的特性 java采用单 ...
- Getting logback and slf4j to work in JBoss AS 7
As usual, it has to do with classloading and that JBoss internally also uses slf4j and logback. As e ...
- PE文件解析 基础篇
PE文件解析 基础篇 来源 https://bbs.pediy.com/thread-247114.htm 前言 之前学习了PE格式,为了更好的理解,决定写一个类似LoadPE的小工具. 编译器是VS ...
- Google题解
Kickstart2017 RoundB B.题意: 二维平面上有n个点, 每个点坐标(xi, yi), 权值wi, 问: 在平面上找一点p, 使得 Σwi*max(|X-xi|, |Y-yi|)最小 ...
- Web前端开发神器--WebStorm(JavaScript 开发工具) 8.0.3 中文汉化破解版
WebStorm(JavaScript 开发工具) 8.0.3 中文汉化破解版 http://www.jb51.net/softs/171905.html WebStorm 是jetbrains公司旗 ...
- 解题:洛谷 p1858 多人背包
题面 设$dp[i][j]$表示容量为$i$时的第$j$优解,因为是优解,肯定$dp[i][j]$是随着$j$增大不断递减的,这样的话对于一个新加进来的物品,它只可能从两个容量的转移的前$k$优解中转 ...
- centos详细安装redis步骤
1. 从官网(http://redis.io)下载最新稳定版2. 使用命令解压下载的tar包:tar –zxvf redis-3.2.0.tar.gz3. 通过命令cd redis-3.2.0进入源码 ...
- QNX下进程间通信
https://blog.csdn.net/dh314552189/article/details/87879016 server.cpp #include <stdlib.h> #inc ...