x-OS

编译器和操作系统 他们两个都是软件和硬件接口的桥梁.

编译器是code和cpu的桥梁

操作系统原理

线程模型

线程机制是现代编程中常用的一种抽象概念。在多处理器系统上,它能保证真正的并行处理。

线程实现

线程实现, 主要有三种实现方式

线程本地存储:thread local storage(简称TLS)。也叫线程特有存储:thread specific storage(简称TSS)或线程私有存储:thread private storage https://www.homedt.net/283433.html

线程参考资料

内存模型

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

$ free -h -w
              total        used        free      shared     buffers       cache   available
Mem:           754G        335G        281G        4.1G        1.9G        135G        400G
Swap:            0B          0B          0B

memory arena (memory pool)

申请一大块连续的内存,然后自己管理(如何使用、如何分配、如何回收)

BFC 内存分配策略 - best-fit with coalescing

IO模型

socket系统调用,是进行TCP/IP通信的接口。

高并发下的IO模型

文件I/O

标准I/O

Linux

Page Cache 和 Buffer Cache

页面缓存又叫文件缓存. 文件读取是由外存上不连续的几个磁盘块,到buffer cache,然后组成page cache,然后供给应用程序。

Android

https://source.android.com/docs/core/architecture

Fuchsia

Google 近期在 github 上建立了一个新的 organization,名为 Fuchsia,这是Google正在研发的另一款操作系统。因为 Google 已经拥有 Android 和 Chrome OS 两种操作系统,大家都在猜测为什么还要费力去开发新的系统。有两种猜想,一个是因为 Linux 内核的GPL协议一直限制着商用闭源,另一个是新的操作系统的目标是要打造嵌入式的实时操作系统用于日益成熟的虚拟现实、智能家电等设备。

Fuchsia OS的内核名为magenta,其中有MIT和BSD两种协议。微内核kernel用的是MIT协议,用户空间的服务、库、驱动用的是BSD协议。除了输入输出端口读操作、wait、sleep这些API以外的API都设计为非阻塞的。Fuchsia支持X86和ARM处理器。

LK 嵌入式内核

LK embedded kernel 是 另一个内核开源项目, 专门为移动小型设备打造,起能够应用在RAM很小、外设有限的系统中。 Magenta内核的内部构建基于LK,上层实现了进程、对象句柄、安全机制的概念。

Magenta 内核对象

Magenta 是基于对象的内核。用户空间的程序通过内核对象句柄和系统资源进行交互。内核对象由C++类实现,派生自Dispatcher类,目前实现了下面几种对象。

内核对象的生命周期是由引用计数器来控制的。一个内核对象一般因某个系统调用而产生,将一个句柄与其绑定,引用数refcount设为1。该对象呗其他句柄引用时,计数加1。调用sys_close等调用讲句柄与对象分离后,引用计数减1。当引用计数为0时内核对象会被销毁。

系统调用

Thread

Handles

Message Pipes

Futexes

IO Ports

Threads

Cryptographically Secure RNG

Wait Sets

HarmonyOS

*****
Written by Lu.dev on 04 September 2019