The core functionality of an OS

操作系统的核心任务在于同时支持多个活动,即,操作系统必须将硬件资源分时共享给所有的进程使用。

为了保证进程的活动质量,操作系统还必须保证进程的执行是 独立/孤立(isolation) 的,即进程不会因意外或恶意目的破坏其他进程的执行,以及不会被其他进程破坏。

保证独立性的前提下,进程之间合理的交互和通信也应该被支持,因此操作系统应该提供 进程间通信 的方式,例如 pipe

总的来说,操作系统必须为进程提供以下服务:

  • ==时分复用== 底层硬件
  • ==独立== 的执行环境(内存,内核状态等)
  • 进程之间的合法 ==交互==
阅读全文 »

操作系统的职责是在多个程序(进程)之间共享计算机提供的物理资源,并提供一系列比直接操作硬件更有用的服务。具体地说,操作系统为计算机硬件提供一层抽象,使软件程序不需要关心硬件的具体实现。操作系统还必须通过某种时分复用的机制使得多个程序可以共享底层硬件。最后,操作系统也必须为不同程序进程提供某种通信机制。

操作系统中,运行的程序被抽象成进程,一个进程的内容即它所占用的内存及其他资源。其中,在内存中存有进程的指令,数据,堆栈等运行时上下文。操作系统接口即操作系统内核为其他进程提供的一系列服务的接口,称为系统调用 (system call) 。当进程需要调用系统服务时,其只能通过调用操作系统接口实现.

阅读全文 »

自 C++ 11, 模板可以接受可变数量的参数,这一特性允许向模板传入任意数目的任意类型参数

阅读全文 »

C++ 模板的参数不必是类型,也可以是编译时整型常量。例如标准模板库中的 std::array 就接受非类型模板参数用于描述数组的长度: std::array<int, 10>

阅读全文 »

包括函数模板, 类模板, 别名模板, 变量模板基本的用法, 偏特化和全特化的基本知识, 以及类型推导的基本用法.

阅读全文 »

大概半个月前在看 cppcon 2022 一个 talk 时候偶然发现 Nicolai M. Josuttis 这么一个技术作家, 打算把他的 the complete guide 系列, 包括 C++ templates: the complete guide, C++ 17: the complete guideC++ 20: the complete guide 都看一看。最近刚读完 C++ templates: the complete guide 的第一部分也是基础部分的 11 章。 书中许多概念也在别的书例如 Effective Modern C++ 出现过, 这里打算完整地写几篇文章作为我对 C++ template 的学习总结, 主要记录下那些我阅读本书之前未知的新知识和虽然是已知的知识但尚未考虑过的地方。希望能够顺利完成这一系列。

阅读全文 »

阅读全文 »

Shot with Nikon D610.

阅读全文 »
0%