*** 作系统相关总结(其他)

 *** 作系统相关总结(其他),第1张

目录

一、 *** 作系统 OS 与内核 Kernel 有什么区别?  

1.内核

2. *** 作系统

 二、如何在C++和Python间优雅的共享数据  

三、bug 排查大曝光,涉及Linux 内核的那种 


一、 *** 作系统 OS 与内核 Kernel 有什么区别?   1.内核

        内核仅仅是 *** 作系统的一部分,是真正与硬件交互的那部分软件,与硬件交互包括读写硬盘、读写网盘、读写内存以及任何连接到系统中的硬件。

        除了与硬件交互外,内核还负责以进程的形式来分配资源,分配什么资源呢?所谓资源就是硬件,比如CPU时间、内存、IO等等,这些都是资源。

        每个进程都认为自己在独占CPU,这通过CPU时间片来实现,内核让CPU在各个进程之间快速切换,这样程序员写好程序员后直接运行即可,即使在单核系统中运行成百上千个进程都没有问题。

        每个进程都认为自己在独占内存,这通过虚拟内存来实现。为什么都要虚拟化呢?答案显而易见,因为计算机系统内的资源是有限的,我们只有几个CPU核心、几个G的内存,但却要同时运行几百几千个进程,除此之外我们别无它法。

        内核的职责就是以进程的形式来分配CPU时间,以虚拟内存的形式来分配物理内存,以文件的形式来管理IO设备。

2. *** 作系统

        不同的 *** 作系统可以有相同的内核。实际上我们熟悉的Linux只是内核而不能称得上是 *** 作系统,Ubuntu则可以认为是 *** 作系统,其内核是Linux;RedHat也是 *** 作系统,其内核同样是Linux;我们可以看到,尽管Ubuntu和RedHat是不同的 *** 作系统,但其内核可以是相同的。这就好比它们可以基于同样的底盘打造出不同的车型。

        而我们熟悉的Windows也是 *** 作系统,其内核是Windows NT内核。

         *** 作系统需要提供两种接口:

  • 给用户提供 *** 作接口。
  • 给程序员提供编程接口

 二、如何在C++和Python间优雅的共享数据  

        任何一门语言都能处理字符串,而字符串有一个天然的优势,那就是自解释,self description,对于字符串"computer",只要提供该字符串所在的内存地址,任何一门语言写的代码都能正确处理该字符串。

        我们需要定义字符串的格式,以一种标准化的形式来描述信息。格式化的字符串:Json(实际上XML也是可以的,只不过XML过于复杂)。

        Json本质上就是字符串,但是有自己定义的格式,任何一门语言拿到Json定义的字符串后都能正确的解析出内容来,换句话说Json实际上是一种语言独立的(language-independent,这里的语言指编程语言)数据类型,不但利于人类阅读也利于机器解析。

        Json语法非常的简单,但是使用Json你可以使用字符串来表示非常复杂的数据,一定要记住,Json是纯文本的。

        在这里我们可以看到纯文本的力量,那就是通用性,二进制就不具备通用性,除非事先声明每一个字节是什么意义,也就是说二进制不具备自解释的特性。因此在进行系统设计时不要忘了简单但功能强大的纯文本。

三、如何在C++和Python间优雅的共享数据  

        进程看上去被卡死,那么:

  1. 如果被卡在用户态,那么该进程 CPU 使用率必然很高(死循环之类);
  2. 如果被卡在内核态,这时进程应该正在进行 IO 或者网络通信等,那么 CPU 使用率应该会很低。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/798768.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存