Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1848106
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: LINUX

2019-12-08 20:27:10

操作系统的核心——内核

管理和分配计算机资源的核心层软件,其职责如下:
1. 进程调度
2. 内存管理
3. 提供文件系统
4. 创建和终止进程
5. 对设备的访问(驱动)
6. 联网
7. 提供系统调用应用编程接口api

现代CPU至少可以在两种不同状态下运行:用户态(Ring 3)和内核态(Ring 0),虚拟内存空间也被划分为用户空间部分和内核空间部分。在用户态运行时,不可以访问内核空间部分的内存;在内核态时,两部分内存均可访问

shell

主要用于读取用户输入的命令,并执行相应的程序,比较流行的有Bourne shell(shell)、C  shell(csh)、Korn shell(ksh)、Bourne again shell(bash)

用户和组

系统会对每个用户的身份做唯一标识,用户可以隶属于多个组,相关的文件有/etc/passwd, /etc/shadow等,root的uid为0

单根目录层级、目录、链接以及文件

文件类型:普通文件、设备、管道、套接字、目录以及符号链接
软链接和硬链接:硬链接所指的inode都一致,软链接的inode指向单独文件,其存储内容为执行的实际文件。
文件权限

文件I/O模型

Linux系统I/O模型最为显著的特征之一是其I/O通用性概念。也就是说,同一套系统调用所执行的I/O操作,可以施加在所有文件类型上,也就是“一切皆文件”

进程

进程的内存布局:
1. 文本段
2. 数据段
3. 堆
4. 栈
_exit()函数退出进程

用户相关id:
1. 真实用户id和组id:标识进程所属的用户和组(谁启动的这个东西)。新进程会从其父进程处继承
2. 有效用户id和组id:进程在访问受保护资源时,会使用这两个id来确定访问权限
3. 补充组id:用来标识进程所属的额外组

capabilities:始于内核2.2, linux把传统上赋予超级用户的权限划分为一组相互独立的单元(也就是“能力”)。每次特权操作都与特定的能力有关,仅当进程具有特定能力时,才能执行相应的操作。可以赋予某个进程部分能力,使得其能够执行某些特权操作,又能防止其执行其他特权操作
软资源限制:进程可以消耗某类资源的总量
硬资源限制:软限制调整的上限,只能调低,不能调高

内存映射

由某一进程所映射的内存可以与其他进程的映射共享。具体可以通过属性参数传递控制。

mmap()会在调用进程的虚拟地址空间中创建一个新的内存映射,有文件和匿名两种方式


静态库和共享库

动态链接器:GOT, PLT


进程间通信以及同步

信号(软中断),管道,套接字,文件锁,消息队列,信号量,共享内存


线程

共享同一数据区域和堆,每个线程都有自己的栈,用来装载本地变量和函数调用链接信息

进程组和shell任务控制

进程组id = 组长进程id

会话、控制终端和控制进程

会话指的是一组进程组,会话中所有进程都具有相同的会话标识符。通常,会话都会与某个控制终端相关,控制终端建立与会话首个进程初次打开终端设备之时。一个终端最多只能称为一个会话的控制终端
打开控制终端会致使会话首进程称为终端的控制进程。一旦断开了与终端的链接,控制进程将会收到SIGHUP信号
在任意时刻,会话中总有一个前台进程组,可以从终端中读取输入,向终端发送输出。一个会话可以拥有任意数量的后台进程组,有以“&”字符结尾的命令来创建


伪终端

伪终端是一对相互连接的虚拟设备,也称为主从设备,在这对设备之间,设有一条IPC通道,可供数据进行双向传递


日期和时间

真实时间:UTC 1970年1月1日凌晨其实
进程时间:系统CPU时间和用户CPU时间

/proc文件系统

是一种虚拟文件系统,以文件系统目录和文件形式,提供一个指向内核数据结构的接口。一般只有特权级进程才能修改/proc目录下的文件内容




阅读(6074) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~