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章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此 ...
随机推荐
- rhel和centos7下更改网卡名称ens33为eth0
Linux使用小Tips 整理些Linux些常遇到的问题. 修改网卡ens33为eth0 在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯.现更改回旧名称eth0看着顺眼. 备份/ ...
- 2018 桂林ccpc现场赛 总结
Day 0 5个小时的火车,坐的昏昏欲睡.桂林站出来没有地铁,而是出租车排成长队依次上车,也算是某种意义上的地铁吧.到了酒店才发现学校那边又给我们换了,又拖着行李找新的酒店,途中路过一家餐馆,所有人都 ...
- 【开发工具IDE】eclipse的SVN提交忽略target等多余文件
这个build失败的解决方案就是不要把你项目的 target目录放在src repository 里面,还有 .project 和 .classpath最好也别放到src repository 里. ...
- ldap禁止匿名用户登录
此处默认ldap已经安装完成,安装文档传送门:https://www.cnblogs.com/crysmile/p/9470508.html openldap默认安装完成,是允许匿名用户登录的,因此需 ...
- selenium基础-打开百度进行搜索
1. 安装Python 2. 安装selenium 3. 下载谷歌驱动ChromeDriver,放到Python的Scripts目录下 4. 编写代码,如下 # coding: utf-8 from ...
- BZOJ 3881: [Coci2015]Divljak
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 553 Solved: 176[Submit][Sta ...
- 【bzoj3926】 Zjoi2015—诸神眷顾的幻想乡
http://www.lydsy.com/JudgeOnline/problem.php?id=3926 (题目链接) 题意 给出一棵树,每个节点有一个编号,范围在${[0,9]}$.一个序列是指树上 ...
- Map / HashMap 获取Key值的方法
方法1:keySet()HashMap hashmp = ne HashMap();hashmp.put("aa", "111");Set set = hash ...
- 解题:SDOI 2014 数表
题面 为了好写式子,先不管$a$的限制 设$facs$为因子和,那么有 $ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^mfacs(gcd(i,j))$ 再设$f( ...
- (转)解决dubbox-demo-provider.xml报错的问题:提示Failed to read schema document
背景:在eclipse项目中,经常会遇到xml文件提示找不到.xsd文件的情况.很有必要弄清xsd文件的加载过程! 1 解决过程 dubbo-demo-provider导入eclipse后dubbox ...