各类操作系统的文件夹设计发表时间:2021-01-30 21:17作者:司镜233 就在昨天,我将我用的mac电脑重新装了系统,不是还原的备份系统,原系统也没有任何问题。 主要为以下内容
Linux
参考资料:Linux系统目录结构 Mac从理论上讲,任何电脑可以安装任何系统。 Mac OS X (Unix核心) Macintosh HD:
存放各种软件
系统正常运行所必须:- Applications
用户专有的资源
系统资源库,字体、ColorSync配置、偏好设置及插件等 ApplicationsSystem
Library
等同旧Mac OS应用程序都会使用的共有程式库. 以确保Mac OS环境的一致性. 当中储存有一个在OS X中极为重要的档桉—CarbonLib, 是执行炭火软件时必不可欠的档桉. 此外还有DiscRecordingLib(CD|R-RW用的程式库), OpenGLLib(OpenGL), stbCLib(c语言)
作为存放系统所使用的各种XML档桉, 并为其格式定义之档桉. Mac OS X Data形式製成的文书, 分别由三个档桉管理, 分别是PropertyList.dtd,KeyboardLayout.dtd及sdef.dtd三个档桉所组成. 此外, .plist档桉亦是由XML撰写出来的.
其实这裡就是用作存放硬件驱动的地方,苹果不称驱动程序为driver, 而是称为Extension.
主要就是用以存放OS X对应及支持何种档桉格式的资料. 例同标准的AppleShare(苹果档桉分享标准), ISO 9660|FTP|HFS及至网络上用的如Samba等
一切和Mac OS Help有关的档桉及文件都存放于此
就是搜寻机能了. 是对应多国语言的.
是一套通讯加密技术, 一般用于Web服务器上, 会将密码传送时以加密的暗号处理, 从而减低第三方成功盗 取资料的可能. 一般应用于以https开首的URL上. Mac OS X内置的WebServer—Apache, 亦包含这个服务.
User包含了某个用户专有的资源。这里也有一个Library文件夹,不同与上边的那个Library,是专为你的帐号服务,里面放的是你自己的个性化字体、配置文件等
windows系统被分成内核模式和用户模式。 内核模式的构成文件是系统的核心文件她包含: hal.dllntoskrnl.exe设备驱动文件系统驱动图形设备驱动win32k.sys 1.首先来看第一层HAL(硬件抽象层) HAL使得reactOS 内核可以运行在不同的x86母板上。HAL为内核抽象母板的特定代码也许是对不同母板定义一种抽象的接口,向上提供一种标准的接口调用,这样不同的母板就不需要改变内核,思想上有点像驱动程序的设计,不过用在另外一个地方(具体的实现目前还不知道,以后边看代码边了解)。 2.ntoskrnl(内核) 内核又分成两层,第一层有的称为核心层(core)提供非常原始且基本的服务,如多处理器的同步、线程调度、中断分派等等。第二层是执行体(EXECUTIVE)内核执行体提供了系统的服务,这里的服务不是指windows服务管理器看到的那种服务,而是一些系统函数。而这些函数被划分成不同的类别:
3.设备驱动程序 设备驱动程序是核心态可加载模块(以.SYS为扩展名,存放在system32\drivers),它们是I/O管理器和相关硬件设备的接口。设备驱动程序采用一种I/O管理所规定的接口标准来编写,因此可以被内核执行体的I/O管理单元调用来驱动硬件的工作。 4.文件系统驱动程序 文件系统驱动程序也是核心态可加载模块(以.SYS为扩展名system32\drivers),文件系统其实是强加给存储硬件的一种文件存放规则。某类文件系统其实就是按照他的文件存取规则在存储器上组织文件的信息。比如FAT32 按照FAT32的存储规则来存放文件ext2又按照ext2的文件规则存放文件。 文件系统按照I/O管理的接口标准来实现一组存储规则,同时文件系统也可以将信息按照自己的存储方式请求I/O管理单元,让I/O管理单元通过这个设备的设备驱动程序将信息存放到该设备上。 这样的方式使得文件系统只负责存储规则的定义。而驱动程序去处理硬件的调度(比如如何移动磁头臂,采用什么调度算法等)而I/O管理仅仅是他们之间的协调员,至于如何协调,I/O管理向外定义了自己的标准。 5.图形设备驱动 这个设备有点独特,从图上来看,(这个图是windows 2000的体系结构图)好像只有内核模式设备驱动也就是win32k.sys才能启动。图形设备驱动其实和其他的设备驱动程序我想也不会有太大的差别(以后看代码在了解)。 不过有一点可以了解,那就是图形设备驱动是由win32k来驱动的,估计提供的也是硬件驱动。 6.win32k 这个东西应该是windows所说的win32子系统的内核部分(原生子系统,其他的子系统是可以分割的),如果没有这个子系统windows就不能运行?(好像微软是这么说的,原因好像是win32 的文档化的 API都是通过这个子系统实现的,据说最初的子系统都通过CSRSS来实现,这个东西最初好像包含至少3个子系统,1.win32,2.OS/2,3.POSIX,随着win32的羽翼逐渐丰满,在发行时就不再包含其他两个。但是还是依然叫CSRSS,慢慢看代码才知道,这些都是道听途说)。 win32k也被划分成两个部分,第一个是USER32,第二个是GDI32, ReactOS的win32K估计基本上都是通过wine移植过来的。 USER32: 包含了windows管理的操作吧,比如如何创建窗口,显示窗口,隐藏窗口,移动窗口排列窗口z轴,对拥有窗口的Z轴排序,Region(可视区域)操作,鼠标集中测试等。 GDI32: 包含图形设备的绘制操作(这些操作也可以叫服务),比如画点,画线,位图操作等,GDI会将一些复杂的绘图操作转变成简单的绘制请求发送给图形驱动程序(如果这个图形驱动程序不支持复杂绘制)还有就是一些设备无关的位图操作,有的可以保存在内存或文件,而如果将设备无关的位图输出的话就会被转换成设备相关的位图然后再输出。 推荐书籍&资料《windows程序设计》 《windows核心编程》 《鸟哥Linux私房菜》 《APUE》 Linux对于Linux应用的学习,主要有六部分:1. 环境搭建;2. 基本操作;3. 系统编程;4. 网络编程;5. 数据库编程,6. Shell编程。下面一一详细介绍。
作为Linux工程师,毋庸置疑一定需要Linux环境。对于Linux环境的获取,我们通常有两种方式: 将电脑整体安装为Linux系统; 在电脑里安装一个虚拟机,跑Linux电脑; Window+Linux双系统。 得到Linux环境后还不够,还要知道如何配置、如何远程连接Linux电脑、如何与Linux电脑互传文件、如何在主机上阅读Linux电脑中的代码,等等。
众所周知,Linux很少或几乎没有界面,所有的操作几乎都可以通过命令行来完成。对于运维人员来说,需要掌握相当大量的Linux命令。而对于应用、驱动方向的人员来说,只需掌握一些基本的常用的命令即可。对于这部分很多人建议看 「鸟哥的私房菜」 ,但我觉得这个更适合运维人员,我们无需掌握那么多命令。
在学系统编程之前,一定要先学习Makefile,这会为后续的学习提高很大效率。之后的系统编程,主要有几大块:IO编程、进程、线程、进程间通讯(包括管道、信号、信号量、共享内存等)。这几部分学完了,基本也就差不多了。
网络编程主要就是socket,poll,epoll,以及对TCP/IP的理解,同时要学会高并发式服务器的编写。
数据库的内容其实并不属于Linux,但在项目中经常要用到。这部分主要要学会数据库的基本操作,以及如何写一套接口去操作数据库。
Shell是Linux下的脚本语言,功能虽然不如高级语言强大,但它可能做很多事,在某些场合甚至比高级语言要方便得多。当然除了Shell脚本,还有Python脚本。 Linux应用编程书籍推荐: UNIX环境高级编程。简称APUE,号称程序员的圣经。它不是一本API字典,它还讲述了很多操作系统的细节,内存,文件系统等方面,是一本难得的好书。但是它起点有点高,不适合初学者。 Linux程序设计。如果觉得APUE有点难入门的话,可以选择此书进行入门。 Unix/Linux系统编程手册。这本书号称是一本超越APUE的书,它是一本比较新的书,里面新增了APUE所没有的Linux/Unix新特性。而且对于一些概念性的东西讲的确实比APUE好。但至于能否超载APUE,还有待历史的考验。 UNIX 网络编程。也是一本非常经典的书,主要是网络编程方向的。 MySQL必知必会。本书在Amazon上长期排在数据库销售榜首,建议想快速了解数据库原理和MySQL的新手阅读。快餐性质,简洁明快,小开本,而且很薄,比较好阅读。 Linux Shell脚本攻略。这本书很薄很精华,它追求的不是全,而是精,所以用它来入门再适合不过了。 |