Questions tagged «operating-system»

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

4
运行计算机程序会怎样?
我知道一般的理论,但我不适合细节。 我知道程序驻留在计算机的辅助存储器中。一旦程序开始执行,它将被完全复制到RAM中。然后,处理器一次检索几条指令(取决于总线的大小),将它们放入寄存器中并执行它们。 我也知道计算机程序使用两种内存:堆栈和堆,它们也是计算机主内存的一部分。堆栈用于非动态内存,堆用于动态内存(例如,与newC ++中的运算符相关的所有内容) 我不明白的是这两件事是如何联系的。堆栈在什么时候用于执行指令?指令从RAM到堆栈,再到寄存器?




6
TeamViewer有多快?
抱歉,长度太长了。 介绍 我正在Windows Vista / 7的C#4.0中开发远程桌面软件(只是为了好玩)。我已经克服了一些基本的障碍:我拥有一个健壮的UDP消息传递系统,相对简洁的程序设计,一个镜像驱动程序(DemoForge提供的免费DFMirage镜像驱动程序)已启动并正在运行,并且我已为所有实现了NAT遍历对称NAT除外的NAT类型(存在于公司防火墙中)。 关于屏幕传输/共享,由于有了镜像驱动程序,我会自动收到有关更改的屏幕区域的通知,并且可以简单地将镜像驱动程序的不断变化的屏幕位图编组到自己的位图。然后,我将屏幕区域压缩为PNG并将其从服务器发送到我的客户端。事情看起来还不错,但是还不够快。它和VNC一样慢(顺便说一句,我不使用VNC协议,只是一个自定义的业余协议)。 从最慢的远程桌面软件到最快的远程桌面软件,该列表通常从所有类似VNC的实现开始,然后攀升至Microsoft Windows Remote Desktop ...然后是... TeamViewer。对于CrossLoop和LogMeIn不太清楚-我没有使用过它们,但是TeamViewer的速度非常快。从字面上看,它是真实的。我tree在命令提示符下运行了一条命令,并以20毫秒的延迟进行了更新。我可以比笔记本电脑慢几毫秒来浏览网页。在Visual Studio中垂直滚动代码的延迟时间为50毫秒。考虑一下要完成所有这些工作,TeamViewer的屏幕传输解决方案必须多么强大。 VNC使用基于轮询的挂钩来检测屏幕变化,并在最坏的情况下进行暴力屏幕捕获/比较。在最佳状态下,他们使用DFMirage之类的镜像驱动程序。我在这个水平上。他们使用了称为RFB协议的协议。 Microsoft Windows远程桌面显然比VNC高出了一步。我从StackOverflow上的某个地方听到,Windows远程桌面不会发送屏幕位图,而是发送实际的绘图命令。这非常出色,因为它可以发送简单的文本(在此坐标处绘制此矩形并使用此渐变为其着色)!远程桌面确实非常快-这是在家中工作的标准方式。它使用了一种称为RDP协议的东西。 现在,TeamViewer对我来说是一个完全的谜。显然,他们发布了版本2的源代码(TeamViewer是2012年2月的版本7)。人们已经读过它,并说版本2没有用-它只是对具有自动NAT遍历的VNC的一些改进。 但是版本7 ...现在快得离谱了。我的意思是,它实际上比Windows Remote Desktop快。我已经使用TeamViewer流式传输DirectX 3D游戏(速度为1 fps,但Windows远程桌面甚至不允许DirectX运行)。 顺便说一句,TeamViewer 无需镜像驱动程序即可完成所有这些操作。可以选择安装一个,但速度会更快一点。 问题 我的问题是,TeamViewer怎么这么快?一定不可能。如果您即使在24位深度(16位深度也很丑陋)下都具有1920 x 1080分辨率,那仍然是6,220,800字节原始数据。即使使用libjpeg-turbo(大型公司使用的最快的JPG压缩库之一)将其压缩到30KB(让我们非常慷慨),也需要花费一些时间才能通过TeamViewer的服务器进行路由(TeamViewer通过简单地代理流量来绕过公司的对称NAT)他们的服务器)。而libjpeg-turbo压缩将需要时间来压缩。对于我来说,高质量的JPG压缩需要175毫秒才能完成1920 x 1080的完整屏幕截图。如果主机计算机运行Atom处理器,则该数字将增加。我只是不了解TeamViewer如何如此出色地优化了屏幕传输。同样,小尺寸图像可能会被高度压缩,但至少要花费数十毫秒的压缩时间。大型图像无需花费时间即可压缩,但需要很长时间才能通过。不知何故,TeamViewer完成了整个过程,每秒获得大约20-25帧。我使用了网络监视器,TeamViewer在500 Kbps和1 Mbps的速度下仍然没有滞后(在该传输速率下,VNC软件滞后了几秒钟)。在我的tree在命令提示符测试中,TeamViewer接收入站数据的速率为1 Mbps,并且仍以5-6 fps的速度运行。VNC和远程桌面不这样做。又怎样? 答案会有些复杂和复杂,因此,如果您只是说这是因为它们使用UDP而不是TCP(请相信他们实际上确实确实使用TCP确实成功),请不要发布0.02美元。 我希望在StackOverflow上的某个地方有TeamViewer开发人员。 潜在答案 人们回复后将对此进行更新。 我的想法是,首先,TeamViewer具有很好的网络控制。例如,他们将大数据包拆分为MTU大小以下,并且从不浪费行程。他们可能有各种各样的花哨的钩子来检测屏幕变化以及非常快的XOR图像比较。


6
为什么要使用Python的os模块方法而不是直接执行shell命令?
我试图了解使用Python的库函数执行特定于操作系统的任务(例如创建文件/目录,更改文件属性等)的动机是什么,而不是仅通过os.system()or 来执行这些命令subprocess.call()? 例如,为什么我要使用os.chmod而不是做os.system("chmod...")? 我知道,尽可能多地使用Python的可用库方法,而不是直接执行Shell命令,更像是“ Pythonic”。但是,从功能角度来看,这样做还有其他动机吗? 我只在这里谈论执行简单的单行shell命令。当我们需要对任务的执行进行更多控制时,我知道subprocess例如使用模块更有意义。

5
如何在Python中获取PATH环境变量分隔符?
当需要将多个目录串联在一起时(例如在可执行文件搜索路径中),存在一个与OS相关的分隔符。对于Windows ';',对于Linux':'。Python中有没有一种方法可以分割哪个字符? 在对此问题的讨论中,如何使用python找出我的python路径?,建议这样os.sep做。这个答案是错误的,因为它是目录或文件名组成部分的分隔符,等于'\\'或'/'。


5
如何检查Python中的操作系统?
我想检查操作系统(在运行脚本的计算机上)。 我知道我可以os.system('uname -o')在Linux 中使用,但是它在控制台中给了我一条消息,并且我想写一个变量。 如果脚本可以告诉您它是Mac,Windows还是Linux,那就可以了。我该如何检查?


13
日常机器如何编程?
日常机器(不像家用电器,数字手表等那样的计算机和移动设备)如何编程?可口可乐自动售货机的编程中使用哪种代码?我的咖啡机如何接受预先设定的时间,然后在几小时后开始冲泡一壶咖啡? 这些机器内部是否装有操作系统,还是更基本的东西?它们是用Assembly,C还是其他某种语言编写的? 而且,我真的很想找到一些列出这些操作系统或基础代码系统的资源,甚至在可能的情况下甚至还带有源代码。如果有人知道这样的资源(搜索对我没有任何帮助),那就太好了。

4
在UNIX中,挂钟时间,用户cpu时间和系统cpu时间具体是什么?
我可以根据名称进行猜测,但是在UNIX中,挂钟时间,用户cpu时间和系统cpu时间具体是什么? 用户cpu时间是否是执行用户代码所花费的时间,而内核cpu时间是否是由于需要特权操作(例如从IO到磁盘)而在内核中花费的时间? 该度量单位是什么时间单位。 挂钟时间确实是进程在​​CPU上花费的秒数,还是名称只是误导?



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.