月度归档: 2020 年 8 月

7 篇文章

thumbnail
Linux 进程(下)
进程控制 孤儿进程 在操作系统中,如果父进程在子进程退出之前终止,子进程的状态会发生变化,成为所谓的“孤儿进程”。在这种情况下,操作系统会将孤儿进程自动分配给 PID 为 1 的特殊进程,即 init 进程,作为其新的父进程。 孤儿进程的处理: 收养机制:操作系统确保所有孤儿进程都有一个父进程。当父进程退出时,操作系统会介入,将孤儿进程的父进程设置…
thumbnail
Linux 进程(上)
进程 操作系统的背景 批处理系统: 操作系统的最初原型是批处理系统,这种系统允许操作员将所有任务集中起来,由系统自动读取并执行。当一个任务完成后,系统会自动执行下一个任务。然而,批处理系统的主要问题是在任务执行过程中经常需要等待 IO 操作,导致 CPU 频繁空闲。 多道程序设计: 为了解决 CPU 空闲的问题,引入了多道程序设计技术。在这种设计中…
thumbnail
Linux 管道和 IO 多路复用
管道 通信的方式 在通信系统中,根据数据传输的方向和方式,通信可以被分为单工、双工和半双工三种模式。 通信方式 描述 单工通信 永远只能由一方向另一方发送数据 半双工通信 双方都可以收发数据, 但是在同一时刻只能一端发另一端收 全双工通信 两端可以同时收发数据 命名管道 Linux 中的命名管道(named pipe)是一种特殊类型的文件, 又称为…
thumbnail
Linux 文件流
无缓冲文件流 带用户态缓冲区的文件流: 这类文件流属于语言的库函数,是对系统调用的封装。 它们使用用户态缓冲区来减少系统调用的次数,提高 I/O 操作的效率。 用户程序通过缓冲区与文件进行交互,而不需要直接进行系统调用。 用户态缓冲区的作用: 用户态缓冲区作为数据传输的中间层,由语言的标准库管理。 它的存在简化了用户程序的 I/O 操作,因为用户程…
thumbnail
Linux 目录流
文件系统编程概述 三种类型的函数对比 ISO C 标准库函数: 这些函数是由 ISO(国际标准化组织)提供的,具有最好的通用性和跨平台性。在所有遵循 ISO 标准的现代 C 编译平台上,这些函数的行为都是一致的。 这些函数提供了一些通用的功能实现,例如:printf、scanf、fopen、malloc 等。 它们在 man 手册的第 3 部分(3…
thumbnail
Linux 杂项
Linux 系统层次结构 内核交互 内核交互的定义: 内核交互是指用户空间程序请求操作系统内核执行某些操作的过程。由于内核控制着计算机的所有硬件资源,因此任何需要访问或控制这些资源的操作都需要通过内核来完成。 内核的作用: 内核负责管理计算机的硬件资源,包括但不限于: CPU 调度 内存管理 外部设备(如键盘、鼠标、显示器等) 进程和线程的创建、调…
thumbnail
Linux C 基础
C 语言标准 ISO C 标准(International Standardization Organization C)是一套确保 C 语言函数在不同平台上具有一致行为的标准。这些标准定义了语言的语法、库函数以及它们的行为,从而为开发者提供了跨平台开发的便利。 例如,一些常见的 C 语言函数如 printf、scanf、malloc 和 fope…