栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

一、操作系统 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 使用率应该会很低。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号