Questions tagged «operating-system»

操作系统(OS)是基本软件,其作用是充当资源和可用硬件的软件请求之间的抽象层,管理输入/输出,内存分配/重新分配,文件系统以及设备的其他基本任务(不一定)电脑)应该做的。

25
如何安全地创建嵌套目录?
检查文件目录是否存在的最优雅方法是什么,如果不存在,则使用Python创建目录?这是我尝试过的: import os file_path = "/my/directory/filename.txt" directory = os.path.dirname(file_path) try: os.stat(directory) except: os.mkdir(directory) f = file(filename) 不知何故,我想念os.path.exists(感谢魔芋,布莱尔和道格拉斯)。这就是我现在所拥有的: def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) 是否有“打开”标志,使它自动发生?



28
操作系统开发有哪些入门资源?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我一直想做的一件事就是开发自己的操作系统(不一定像Linux或Windows那样花哨,但比我已经做过的简单启动加载程序要好)。 我很难找到使您摆脱编写简单的“ Hello World” OS的资源/指南。 我知道很多人可能会建议我看一下Linux或BSD。但是此类系统的代码库很大(大概)很大,我不知道从哪里开始。 有什么建议么? 更新:为了使通过Google登陆本文的人们更加容易,这里提供了一些操作系统开发资源: 编写自己的操作系统(感谢亚当) Linux从零开始(感谢John) SharpOS(C#操作系统)(感谢lomaxx) Minix3和Minix2(感谢Mike) OS Dev Wiki和论坛(感谢Steve) BonaFide(感谢Steve) 布兰(感谢史蒂夫) 推出自己的玩具UNIX克隆操作系统(感谢Steve) 破碎的刺操作系统开发系列 其他资源: 我找到了一个很好的资源,名为MikeOS,“ MikeOS是一个学习工具,用于演示简单OS的工作方式。它使用16位实模式进行BIOS访问,因此不需要复杂的驱动程序” 更新了11/14/08 我在Freebyte的...免费和非免费操作系统指南中找到了一些资源,这些资源链接到OSKit和ExOS库等工具包。这些对于开始OS开发非常有用。 更新于2/23/09 Ric Tokyo在这个问题上推荐了nanoos。Nanoos是用C ++编写的操作系统。 更新3/9/09 Dinah为有抱负的OS开发人员提供了一些有用的Stack Overflow讨论:创建自定义操作系统的障碍讨论了在开发OS时可能遇到的陷阱,而OS开发是一个更笼统的讨论。 更新了7/9/09 LB提供了指向Pintos项目的链接,该项目是为学生学习OS开发而设计的教育OS。 更新时间:2009年7月27日(仍然有效!) 我偶然发现了Berkley 的在线OS课程,其中包含23个讲座。 TomOS是MikeOS的分支,其中包括一点内存管理器和鼠标支持。作为MikeOS,它被设计为一个教育项目。它是用NASM汇编程序编写的。 更新了8/4/09 我找到了幻灯片和其他材料,以及上面列出的在线伯克利讲座。 更新了8/23/09 在stackoverflow上标记了osdev的所有问题 OS / 161是用c编写的学术OS,可在模拟硬件上运行。此操作系统在Nachos中类似。感谢Novelocrat! …


16
什么是应用程序二进制接口(ABI)?
我从不清楚什么是ABI。请不要将我指向Wikipedia文章。如果我能理解的话,我就不会在这里发表如此冗长的文章。 这是我对不同接口的看法: 电视遥控器是用户和电视之间的接口。它是一个现有的实体,但是它本身是无用的(不提供任何功能)。电视机上实现了遥控器上每个按钮的所有功能。 接口:是该功能的functionality和之间的“现有实体”层 consumer。接口本身不执行任何操作。它只是调用后面的功能。 现在,取决于用户是谁,有不同类型的界面。 命令行界面(CLI)命令是现有的实体,使用者是用户,而功能却在后面。 functionality: 我的软件功能可以解决我们描述此界面的某些目的。 existing entities: 命令 consumer: 用户 图形用户界面(GUI)窗口,按钮等是现有的实体,而使用者又是用户,功能又在后面。 functionality: 我的软件功能解决了我们描述此接口时遇到的一些问题。 existing entities: 窗口,按钮等。 consumer: 用户 应用程序编程接口(API)函数(或更准确地说)(在基于接口的编程中)接口是现有的实体,此处的使用者是另一个程序,而不是用户,并且功能仍在该层后面。 functionality: 我的软件功能解决了我们描述此接口时遇到的一些问题。 existing entities: 函数,接口(函数数组)。 consumer: 另一个程序/应用程序。 应用程序二进制接口(ABI)这就是我的问题所在。 functionality: ??? existing entities: ??? consumer: ??? 我已经用不同的语言编写了软件,并提供了不同种类的界面(CLI,GUI和API),但是我不确定是否提供过任何ABI。 维基百科说: ABI涵盖了诸如 数据类型,大小和对齐方式; 调用约定,它控制如何传递函数的参数以及如何检索返回的值; 系统调用号以及应用程序应如何对操作系统进行系统调用; 其他ABI标准化细节,例如 C ++名称修改 异常传播,以及 相同平台上的编译器之间的调用约定,但不需要跨平台兼容性。 谁需要这些细节?请不要说操作系统。我知道汇编编程。我知道链接和加载的工作方式。我确切地知道里面发生了什么。 …

4
什么是专用字节,虚拟字节,工作集?
我正在尝试使用perfmon Windows实用程序来调试进程中的内存泄漏。 这是perfmon解释这些术语的方式: 工作集是此进程工作集的当前大小(以字节为单位)。工作集是进程中的线程最近接触的一组内存页面。如果计算机中的可用内存超过阈值,则即使不使用这些页面,它们也将保留在进程的工作集中。当可用内存低于阈值时,将从“工作集”中修剪页面。如果需要它们,将在离开主存储器之前将它们软故障恢复到工作集中。 虚拟字节是进程正在使用的虚拟地址空间的当前大小(以字节为单位)。使用虚拟地址空间并不一定意味着相应使用磁盘或主内存页面。虚拟空间是有限的,该过程可能会限制其加载库的能力。 专用字节数是该进程已分配的当前无法与其他进程共享的内存大小(以字节为单位)。 这些是我的问题: 我是否应该测量私有字节,以确保该进程是否有泄漏,因为它不涉及任何共享库,并且如果发生泄漏,将来自该进程本身? 进程消耗的总内存是多少?是虚拟字节还是虚拟字节与工作集的总和? 专用字节,工作集和虚拟字节之间是否有任何关系? 是否有其他工具可以更好地了解内存使用情况?


13
Windows,Mac OS X和Linux用什么语言编写?
我只是想知道谁知道构成Windows,Mac OS X和Linux的编程语言以及操作系统的每个部分使用的语言(即:内核,插件体系结构,GUI组件等)。 我假设每种语言都有多种语言,显然我知道Linux内核是用C编写的。 我在这里完全猜测Mac OS X包含很多Objective-C代码,因为它是Apple的NeXT派生的语言。 Windows,我听说包含C,C ++和Intel Assembly。Linux或Mac OS是否包含任何汇编代码? 另外,操作系统开发人员是否使用诸如Ruby,Python等脚本语言来编写操作系统的某些部分的脚本?操作系统的哪些部分将用每种语言编写?

13
线程之间共享哪些资源?
最近,在一次采访中有人问我一个问题,流程和线程之间有什么区别。真的,我不知道答案。我想了一会儿,给出了一个很奇怪的答案。 线程共享相同的内存,进程不共享。在回答了这个问题之后,面试官给了我一个邪恶的微笑,并向我提出了以下问题: 问:您知道程序被划分为哪些部分吗? 我的回答:是的(这很简单)堆栈,数据,代码,堆 问:那么,告诉我:线程共享哪些段? 我无法回答这个问题,最后全部说了出来。 请问,有人可以针对进程和线程之间的差异给出正确而令人印象深刻的答案吗?

26
Context.startForegroundService()然后未调用Service.startForeground()
我Service在Android O OS上使用Class。 我计划Service在后台使用。 在Android文档指出, 如果您的应用程序的目标是API级别26或更高级别,则除非应用程序本身位于前台,否则系统会限制使用或创建后台服务。如果应用程序需要创建前台服务,则应调用startForegroundService()。 如果使用startForegroundService(),则Service引发以下错误。 Context.startForegroundService() did not then call Service.startForeground() 这怎么了


6
为什么Linux被称为整体内核?
我读到Linux是单片内核。整体内核是否意味着将完整的内核代码编译并链接到可执行文件中? 如果Linux能够支持模块,为什么不将所有子系统分解为模块并在必要时加载它们呢?在这种情况下,内核不必一开始就加载所有模块,而是可以维护模块中功能的索引,并在必要时加载它们。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.