版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yongyu2000.blog.51cto.com/962342/234809
操作系统,是IT人的任督二脉(之一)。打通这跟筋,便可功力精进,横扫天下。为什么这么说?为什么操作系统如此重要?原因如下:
1)只要你搞软件,就离不开OS。即便你是玩Cisco的,也还要面对IOS吧。
2)大规模架构设计和系统集成,需要对底层OS的能力和容量非常熟悉,才能驾轻就熟。
3)诊断纠错需要熟悉操作系统。
4)性能优化需要熟悉操作系统。
5)搞计算机和网络安全更需要懂操作系统。
5)软件开发需要懂操作系统,如果对OS和API平台不熟悉,那就是两眼一摸黑,出了问题立刻抓瞎。
操作系统,百度百科上是这么解释的:操作系统是控制其他程序和后台服务运行(控制程序),管理系统软硬件资源(管理资源)并为用户提供操作界面(提供界面)的系统软件的集合。这句话写得太好了,把OS的三个职能清晰的展现给我们了:控制程序、管理资源、提供界面(用户图形界面和编程API/SDK)。百度上操作系统这个词条写得非常不错,大家感兴趣可以去看看。我认为,修炼操作系统,应该从两个角度入手,分别是静态的和动态的。静态的,是指熟悉操作系统的基本概念,以及结构和各个模块之间的关系;动态的,是指搞清楚程序在操作系统中运行的过程和方式。
从静态的角度看操作系统
操作系统一般分为内核模式和用户模式。以Windows为例,内核模式中主要包括一些对硬件的管理模块和对程序的控制模块。比如我们熟悉的内存管理器、设备驱动程序管理器、文件系统、安全子系统、注册表等等。一些比较重要的概念和模块是:
1)进程的地址空间。这是包括Windows在内的现代操作系统最核心的概念之一,MSDN上的定义是:所有32位应用程序都有4GB的进程地址空间(32 位地址最多可以映射 4 GB 的内存)。对于Windows操作系统,应用程序可以访问2GB的进程地址空间,称为用户模式虚拟地址空间。应用程序拥有的所有线程都共享同一个用户模式虚拟地址空间。其余2GB为操作系统保留(也称为内核模式地址空间)。这个的很多人不求甚解,往往搞不清楚用户模式虚拟地址空间、物理内存、虚拟内存、内存映射、页面文件等等之间的关系。应用程序对内从的申请和使用过程,也需要理解的非常的透彻,这一部分,在我下面提到的推荐书籍Windows核心编程中,有非常透彻的讲解。
2)进程和线程。这些都是操作系统教材上老生常谈的概念了,进程就不多说了,线程很重要,尤其是操作系统对多线程的实现和处理方式,这是学习服务器端编程或者其他比较深入工作所必须掌握的知识。侯捷曾经翻译过一本《Win32 多线程程序设计》,这本书非常的好,是从另一个侧面学习操作系统的优秀教材。
3)驱动程序。你可能不知道,80%以上的Windows蓝屏死机,是由在Windows系统内核中运行的第三方驱动程序造成的。驱动程序不仅仅包硬件驱动,一些防病毒软件、防火墙,甚至×××软件的,都会在Windows中安装驱动。理解操作系统是如何处理对硬件的访问,驱动程序的类型,驱动程序的安装和加载过程,这些都很重要。你可以不会写驱动程序,但是有这些基本的概念。
4)安全子系统。一提到安全,很多人第一个想到的是***。其实,Windows的安全子系统是非常复杂的,远远不是那些仅仅会使用***工具的伪***所能够掌握的。安全是一个非常奥妙的话题,可以一直很深入钻下去。在自称***之前,请至少先看完《Writing Security Code》。
5)文件系统。随着大规模网络存储技术的普及,需要系统管理员对操作系统的磁盘管理,IO管理,各类文件系统的支持有非常深入的理解。以NTFS为例,其实这个文件系统远远比你想象的复杂,类似于hardlink、数据流、日志等等高级功能,都有值得深入研究的地方。
6)注册表。这个概念每个人都知道,但是我们还需要更深入的理解注册表,知道它的格式、Windows记录内容的习惯、注册表文件的安全和备份、注册表的离线修改和维护,等等。
动口不如动手,我们可以用Sysinternal工具箱中的一些工具,对我刚才说的这些概念,进行一些深入和感性的认识。回家作业:请下载Sysinternals工具箱,并把如下的7个工具逐一操练,搞清楚通过这些工具得到的信息有什么用,在诊断排错的时候,如何选用这些工具。
1)Process Explorer;2)Process Monitor;3)pagedfrg;4)ntfsinfo;5)VMMMap;6)WinObj;7)Diskmon
以下部分尚未完成,把半成品和提纲先行贴出。最近工作非常的忙,只能见缝插针,慢慢地更新了。
在用户模式下,是大量的上层应用程序控制和管理的组件。比如我们熟悉的用户界面、后台服务等等。 也有一些非常重要,但是我们并不太熟悉的模块,比如会话管理器、Win32子系统等等。大量的应用程序和后台服务都是工作在用户模式下,我们也需要对用户模式的各个模块和特点有所掌握。
1)服务
2)会话管理器
3)Win32子系统
从动态的角度看操作系统
操作系统的启动和关机
工具LoadOrd
程序的执行和API的调用
消息队列、多线程等基本概念
作为一个编程平台
COM,组件
.net虚拟机环境
WinDBG是微软著名的调试器。用好这个工具需要相当深厚的功力,不过我们可以拿牛刀来杀鸡,用这个利器,来帮助我们更好地理解Windows和Windows上程序的执行方式。
回家作业:下载WinDBG,初步掌握一些程序外围跟踪和调试的方法。也许你不会成为内核调试高手,也没办法看到Windows源代码,但是可以通过WinDBG,打开一条直通Windwos和应用程序执行本质的桥梁。
一些学习和认识误区
盲从技巧,忽视本质。
假设在先,不求甚解。
深入细节,抓住大局。
操作系统的发展趋势
Google的Chrom OS也许是未来的一个发展趋势(个人看法,与公司无关),它很可能成为操作系统的一个新兴市场和蓝海。如果要做一下未来展望,我们应该首先从操作系统的三个核心功能出发:控制程序、管理资源、提供界面。
1)在控制应用程序方面,
2)对于资源的管理,动态IT的概念。单机操作系统的发展已经日趋成熟和完善,从单机操作系统对单机硬件资源的管理,到针对计算资源池的动态管理和规划。云计算的本质。从消费级别来看,操作系统的应用越发从PC计算到扩展到各类消费类电子产品,类似手机、游戏机、数码影音设备等等。
3)提供界面,用户界面走向自然化,向NUI过渡;编程界面更加灵活,跨平台
再更进一步的扩展思路,
推荐读物
1、Andrew S. Tanenbaum的Modern Operating Systems》(现代操作系统)是我非常推荐的一本“教科书”。豆瓣上的评论是这样的,大家可以参考参考。
2、Windows Internals,这是你能买到的有关Windows操作系统最全面也是最深入的书籍之一。这本书是比较难懂的,很多人买来,一般看到第三章就看不下去了。不过其实把头两章读懂,已经收获颇多了。另外Mark大牛的Sysinternal工具箱,也应该是必备的。
3、说道了解程序在OS中的执行过程,我觉得Jeff Ricard大牛的那本经典之作Windows核心编程是不能不看的。虽然是Win32时代的老书了,但是只要Windows存在一天,只要还有Win32 SDK写的应用程序,那本书就不过时。有人评论说:“从内容来说,确实是一本独一无而的书。虽然总是从API引出,但却相当深入的介绍了Windows的一些设计方面的东西和运行机制。诸如进程、线程、内存管理等,对一个想深入了解Windows的人来说是大有裨益的”。
4、2007年的时候,我曾在TechNet上邀请微软内部的专家开办了一个有关Windows的系列讲座,名称是《深入研究Windows内部原理系列网络广播》,也算是Windows Internals一书的真人中文有声版本,一并推荐给大家。
其实每次我推荐图书资料时都小心谨慎、如履薄冰,很担心对读者产生误导。
因此,最后还要说一句,请根据自己的需要选择,千万不要犯资料导向型的错误
本文出自 “喻勇的博客” 博客,请务必保留此出处http://yongyu2000.blog.51cto.com/962342/234809

本文出自 51CTO.COM技术博客

转载于:https://blog.51cto.com/holy2010/316882

IT人的十八般武艺-操作系统相关推荐

  1. IT人的十八般武艺-序言

    最近看到不少朋友留言,对"IT人的十八般武艺"这一系列非常期待.在此非常感谢大家的信任和厚爱. 目前这一系列中有四篇文章已经同时开始进入构思和写作阶段了.在正式开始连载之前,我觉得 ...

  2. 情绪,是人的底层操作系统!掌控情绪,才能掌控人生

    美国加利福尼亚大学-伯克利分校的研究人员曾发布过一个研究成果,人类有27种情绪:钦佩.崇拜.欣赏.愉悦.焦虑.敬畏.尴尬.厌倦.冷静.困惑.渴望.厌恶.痛苦.着迷.嫉妒.激动.恐惧.愤怒.有趣.快乐. ...

  3. 学习使人进步:操作系统之进程

    操作系统之进程 1.进程 1.1进程的定义 1.2 进程的组成 1.3 进程的特点 1.4 进程控制结构 1.4.1 使用进程控制块 1.4.2 PCB三大类信息 1.4.3 PCB的组织方式 1.5 ...

  4. 华为服务器 国产化 操作系统,华为设备开始使用国产操作系统,国产操作系统的春天,百万人建议强制使用...

    原标题:华为设备开始使用国产操作系统,国产操作系统的春天,百万人建议强制使用 提起操作系统,大家想到的应该就是Windows了,Windows作为一款国外的操作系统进入中国市场,至今已经有20多年了, ...

  5. 操作系统 、人、 宇宙

    操作系统  .人. 宇宙 操作系统核是干嘛的? 简单来说是接受.处理.控制, 执行该行为的主体是主芯片,相当一段时间操作系统核心大脑就是MCU .也就是微控制器,目前也是广泛应用. 再后来有了微处理器 ...

  6. 【学习笔记】操作系统之哲学原理

    引言: 魔术与管理 用户程序与操作系统 进程.内存和文件 进程原理 进程的状态 操作系统管理进程 进程调度 调度算法 1.先来先服务调度算法 2.时间片轮转算法 3.短任务优先算法 4.优先级调度算法 ...

  7. 中国版“微软”要来了?某国产操作系统称已可以替代Windows 7

    源自/扩展谜EXTFANS 放眼如今的计算机操作系统领域,微软绝对算是一家独大. 2009年10月22日,微软Windows 7发布,距现在已经过去了10几年. 这个陪伴了很多人成长的操作系统,如今也 ...

  8. 计算机与操作系统小结

    ''' 计算机与操作系统小结 ''' # markdown文本编辑器# 计算机基础之编程## 什么是编程语言人与计算机交流的介质## 什么是编程通过编程语言写一堆文件## 为什么要编程替代劳动力,完成 ...

  9. 《30天自制操作系统》前言、目录、样章欢迎阅读!

    编著推荐: 只需30天从零开始编写一个五脏俱全的图形操作系统 如果肯坚持,没有什么不可以!祝所有读到这篇文章的人都能写出好的操作系统! 内容简介: 自己编写一个操作系统,是许多程序员的梦想.也许有人曾 ...

最新文章

  1. 聊聊flink的HistoryServer
  2. oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen
  3. 使WEBBROWSER 可编辑
  4. boost::count相关的测试程序
  5. MQ 之 RocketMQ
  6. 软件测试--中间件介绍
  7. 理解sklearn.feature.text中的CountVectorizer和TfidfVectorizer
  8. NoUniqueBeanDefinitionException: No qualifying bean of type ‘XXXX‘ available: expected single matchi
  9. Docker第一章:安装及初始化配置
  10. 7.20-7.26 字节推荐算法(DATA-EDU)5道面试题分享
  11. 计算机应用期刊投中难吗,计算机应用研究投稿水平高吗
  12. mysql安装依赖perl(Data::Dumper)
  13. 使用Google语音识别引擎(Google Speech API)
  14. ZynqMP 调试 FSBL 代码
  15. float单精度浮点和double双精度浮点
  16. 《点石成金》 思维导图
  17. 环球时报评出“影响新中国的60位外国人”
  18. 河南省多校联盟二-A
  19. 有一堆棋子,两枚两枚的数,最后余1枚,3枚3枚的数,最后余2枚,5枚5枚的数,最后余4枚,6枚6枚的数,最后余5枚,只有7枚7枚的数,正好可以数完。编程求出这堆棋子最少有多少枚棋子?
  20. 基于C#分步式聊天系统的在线视频直播系统设计

热门文章

  1. 页面判断用户是否登录
  2. JavaScript -- Window-Interval
  3. 文件系统过滤驱动开发(一)—Win32底层开发小组
  4. 产品规划,要考虑哪些方面?
  5. 线上活动 | 2020年PM如何提高求职成功率?
  6. 人生,能有多少个十年?| PMCAFF 十年故事
  7. Java-Integer源码分析
  8. java 获取系统当前时间
  9. CSS3 :nth-child(n)使用注意
  10. 天融信TOS系统命令行下查看资源使用情况