1.内核是啥玩意儿 操作系统的核心程序 2.内核做啥事情 进程调度 内存管理 提供文件系统 创建或终止进程 管理设备 管理网络 提供系统调用API 3.CPU的工作模式最基本的两种 用户模式/用户态 内核模式/内核态 4.文件系统IO模型概述 内核视角看,就一种字节流序列 用户视角看:文本文件和二进制(数据)文件 内核提供了通用的系统调用执行IO操作 通用的几个IO系统调用函数:open、read、write、close 5.文件描述符概述 本质是一个非负的整数 作用代替一个打开的文件 SHELL程序启动的进程默认继承三个文件描述符 0-标准输入,1-标准输出,2-标准错误 6.进程 就是正在执行的程序实例 内核的处理说明: 将程序代码加载到虚拟内存中 为程序分配变量空间 建立内核记账数据结构 记录与进程相关的各种信息 从内核看来进程是一个个的实体 内核必须处理它们之间的各种计算机资源共享 7.进程的内存布局(按照分段存储) 文本:存储程序代码 数据:存储程序静态变量 堆:程序动态分配的内存空间 栈:函数调用,链接信息,局部变量分配的内存空间 8.进程ID和父进程ID 每一个进程都有一个唯一的整数进程标识符(PID) 每一个进程都有一个父进程的标识符(PPID) 进程拥有用户ID(UID)和用户组ID(GID)信息 9.进程的创建和执行 使用fork函数,使用execve家族的系统调用API执行程序 10.进程终止 使用_exit系统调用API,或是向进程传递信号,将其杀死 无论何种方式退出,进程都会生成终止状态 11.特权进程 是指有效用户ID为0(超级用户)的进程 12.INIT进程 内核创建的第一个进程,所有进程之父 13.进程间的通信方式 信号(signals) 管道(pipes) 套接字(sockets) 文件锁(file locking) 消息队列(message queues) 信号量(semaphores) 共享内存(shared memory) 14.线程 一个进程可以有多个线程 线程可以想象为共享同一虚拟内存以及其他属性的进程 线程之间的通信使用共享的全局变量进行通信 优点一在于协同线程之间的数据共享更为容易 优点二某些算法实现上,比多进程更加自然 15.系统调用 受控的内核入口 使得进程可以请求内核以自己的名义执行某些动作 特点: 系统调用将处理器从用户态切换到内核态以便CPU访问受到保护的内核内存 系统调用的组成是固定的都有一个唯一的数字来标识 每个系统调用都有一组参数指定从用户态传递到内核态的信息,反之亦然 16.处理系统调用和库函数的错误 系统调用失败后,会设置全局变量errno的值 使用perror函数可以打印上一次系统调用失败的错误消息 使用strerror函数获得errno对应的错误信息 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:学不知,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |