计算机操作系统

Unix传奇(上篇)

混江龙づ霸主 提交于 2020-03-24 14:11:55
http://hi.baidu.com/hieda/blog/item/eb78fd444aca4940510ffeef.html 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《 Unix 40年:Unix年鉴 》、《 Unix 40年:昨天,今天和明天 》)。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,这40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。 这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。 了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中

一网打尽!每个程序猿都该了解的黑客技术大汇总

混江龙づ霸主 提交于 2020-03-23 10:28:22
目录 [一网打尽!每个程序猿都该了解的黑客技术大汇总](https://www.cnblogs.com/xuanyuan/p/12529598.html) 网络安全 SQL注入 XSS攻击 反射型 存储型 CSRF攻击 DDoS攻击 DNS劫持 TCP劫持 端口扫描技术 系统安全 栈溢出攻击 整数溢出攻击 空指针攻击 释放后使用攻击 HOOK 权限提升 可信计算 密码学 对称加密 & 非对称加密 秘钥交换技术 信息摘要算法 数据编码技术 多因子认证技术 总结 一网打尽!每个程序猿都该了解的黑客技术大汇总 上面这个段子估计很多朋友都看过,程序员被黑过无数次,在其他人眼中,仿佛我们需要写得了木马,翻得了围墙,修得了电脑,找得到资源,但凡是跟计算机沾点边的,咱都得会才行。 段子归段子,言归正传,对于咱们程序员来说,多多少少了解一些信息安全的技术知识还是大有裨益的,不仅能了解一些计算机和网络的底层原理,也能反哺我们的开发工作,带着安全思维编程,减少漏洞的产生。 本文内容: - 网络安全 - SQL注入 - XSS攻击 - CSRF攻击 - DDoS攻击 - DNS劫持 - TCP劫持 - 端口扫描技术 - 系统安全 - 栈溢出攻击 - 整数溢出攻击 - 空指针攻击 - 释放后使用攻击 - HOOK - 权限提升 - 可信计算 - 密码学 - 对称加密 & 非对称加密 - 秘钥交换技术 -

1.5-操作系统的分类

百般思念 提交于 2020-03-21 23:36:35
  下面我们介绍一下操作系统的分类,各种各样的分类都是存在的,那么我们呢主要是介绍传统的分类。 那么我们要简单提一下,我们教材里提出的这个 Tanenbaum 的这种分类。操作系统是不断在发展的 那么它的发展是由不同的因素来驱动的,这些因素呢我们归纳总结出:   (1)首先是硬件技术的 发展,硬件发展了对操作系统就有新的要求;   (2)还有就是应用需求的发展;   (3) 然后是软件新技术的出现。 所以我们说操作系统的发展是随着计算机硬件技术、 应用需求以及软件新技术的出现而发展的。为什么要不断的进展?那么因为 操作系统要能够充分的利用硬件,能够为用户提供 更好的服务,所以操作系统必须以这个为目标来不断的发展。 从过去到现在, 操作系统实际上是总在不断的往前发展,那么 早期很早的时候是大型计算机,那么有大型计算机操作系统; 后来呢,又有了个人计算机啊,个人计算机呢又从简单到复杂,所以又有 不同的操作系统出现; 当有了网络的 供支持之后,那么我们的操作系统就要支持网络的功能; 后来移动计算出现了,那么操作系统要变得能够支持各种各样的移动 设备上的各种就管理啊,各种管理功能;云计算和我们现在的 泛在计算或者是说物联网时代;一直到今天 非常火的机器人,那么都需要操作系统 进行相应的改改变,然后去支持这些 不同的环境。   那么我们 看一下操作系统的这些分类

计算机操作系统基础知识-2

旧街凉风 提交于 2020-03-21 01:22:16
Shell Shell是操作系统与用户交互的界面。表现为通过控制台执行用户命令。本身不执行命令,仅仅是组织和管理命令。 脚本:类似程序的方式执行一系列的逻辑顺序的命令序列完成复杂的功能和人机交互。保存在文件中,是shell命令的集合。 系统调用 定义:操作系统内核为应用程序提供的服务/函数 特点: 一般涉及核心操作和硬件资源 运行于核态 函数具有唯一ID 产生中断,且为自愿中断 进程管理 定义:是程序在某个数据集合上的一次运行活动。程序的一次运行即为一个进程。 特性: 动态性 并发性 异步性 独立性 分类: 按使用资源权限 系统进程:系统内核相关进程 用户进程:运行于用户态的进程 按对CPU依赖性 偏CPU进程:计算型 偏I/O进程: 进程状态 就绪态:获得了除CPU之外所有资源,通常有多个进程处于就绪态,有一个就绪队列。 运行态:获得CPU,正在运行 等待态: 进程控制块 进程由程序、数据、进程控制块组成。 进程控制块是描述和管理进程的一种数据结构,包括以下内容: 进程描述信息 控制和调度信息 资源信息 现场信息 进程互斥和同步 同步:进程通过协作共同完成同一任务而造成的直接制约关系,如生产者-消费者模式 互斥:进程间竞争系统资源而造成的间接制约关系,同一时间内只有一个进程可以访问系统资源。 临界资源和临界区 临界资源:同一时间只能有一个进程访问的资源 临界区

计算机四级操作系统-3-进程线程模型

本小妞迷上赌 提交于 2020-03-16 18:29:25
第3章 进程线程模型 操作系统中最核心的概念是进程,这是对正在运行程序的一个抽象。操作系统的其他所有 内容都是围绕着进程的概念展开的,所以,透彻地理解进程是非常重要的。即使可以利用的 CPU 只有一个,但是通过进程,可以使系统具有支持并发操作的能力,可将一个单独的 CPU 变换 成多个虚拟的 CPU 。 本章通过大量的细节探究进程,以及进程中的运行实体 —— 线程。 3.1多道程序设计模型 采用多道程序设计可以提高 CPU 的利用率。多道程序设计技术充分发挥了处理器与外围 设备以及外围设备之间的并行工作能力,从而提高处理器和其他各种资源的利用率。下面从程 序的顺序执行、程序的执行环境和程序的并发执行几方面介绍多道程序设计模型。 3.1.1 程序的顺序执行 程序是一个在时间上按严格次序前后相继的操作序列,这些操作是机器指令或高级语言编 写的语句。人们习惯的传统程序设计方法是顺序程序设计,计算机也是以顺序方式工作的 : CPU 一次执行一条指令,对内存一次访问一个字节或字,对外部设备一次传送一个数据块。顺序处理 也是人们习惯的思考方法,为了解决一个复杂的问题,人们把它分解成一些较为简单、易于分析 的小问题,然后逐个解决。也可以把一个复杂的程序划分为若干个程序段,然后按照某种次序逐 个执行这些程序段。 我们把一个具有独立功能的程序独占 CPU 直到得到最终结果的过程称为程序的顺序执行。

进程、线程、协程之概念理解+线程和进程各自有什么区别和优劣

给你一囗甜甜゛ 提交于 2020-03-10 06:09:31
一、概念 首先,根据图了解一下串行,并行和并发的基本概念:   1、进程    资源分配的基本单位 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 Linux系统函数fork()可在父进程中创建一个子进程,在父进程接到新请求时,复制出一个子进程来处理,即父进程监控请求,子进程处理,实现并发处理。注意:必须是Linux系统,windows不能用fork。 组成 进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 特征 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的

计算机操作系统

这一生的挚爱 提交于 2020-03-08 21:16:36
操作系统功能: 进程管理(CPU管理):进程控制;进程调度;进程通信。 内存管理:内存分配;内存共享;内存保护;虚拟内存。 设备管理:设备分配和调度;实现设备无关性;设备传输控制;设备驱动 。 文件管理:存储空间管理;文件操作;目录操作;文件和目录的存取权限管理。 操作系统发展动力:1.用户需求提升 2.硬件技术进步 嵌入式系统:软硬件可裁剪;软硬件一体化;Andriod 小型开源操作系统:MINIX 3 ;http://www.minix3.org/ 大型开源操作系统:Linux ;www.kernel.org /0.1早期版本容易阅读 操作系统逻辑结构: 10.(1)整体结构(2)层次结构(3)微内核结构(客户/服务器结构) (1)整体式结构:以模块(函数)为基本单位构建 (2)层次结构:TCP/IP协议栈 (3)微内核结构:操作系统 = 微内核 + 核外服务器 微内核:足够小,提供OS最基本的核心功能和服务。 核外服务器:完成OS绝大部分服务功能,等待应用程序提出请求。 支持操作系统的的基本硬件结构: CPU、内存、中断、时钟。 一、CPU: 1.CPU态:对资源和指令使用权限的描述。 (1)核态:访问所有资源和执行所有指令;管理程序/os内核 (2)用户态:访问部分资源,其他资源受限;用户程序。 (3)管态:介于核态和用户态之间。 二、内存 存储器分类: (1) RAM

又能扯皮了!没内存了还能看片?

拥有回忆 提交于 2020-03-06 15:35:58
虚拟内存 尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他的问题需要解决: 管理软件的膨胀(managing bloatware) 。虽然内存的大小增长迅速,但是软件的大小增长的要比内存还要快。在 1980 年的时候,许多大学用一台 4 MB 的 VAX 计算机运行分时操作系统,供十几个用户同时运行。现在微软公司推荐的 64 位 Windows 8 系统至少需要 2 GB 内存,而许多多媒体的潮流则进一步推动了对内存的需求。 这一发展的结果是,需要运行的程序往往大到内存无法容纳,而且必然需要系统能够支持多个程序同时运行,即使内存可以满足其中单独一个程序的需求,但是从总体上来看内存仍然满足不了日益增长的软件的需求(感觉和xxx和xxx 的矛盾很相似)。而交换技术并不是一个很有效的方案,在一些中小应用程序尚可使用交换,如果应用程序过大,难道还要每次交换几 GB 的内存?这显然是不合适的,一个典型的 SATA 磁盘的峰值传输速度高达几百兆/秒,这意味着需要好几秒才能换出或者换入一个 1 GB 的程序。 SATA(Serial ATA)硬盘,又称串口硬盘,是未来 PC 机硬盘的趋势,已基本取代了传统的 PATA 硬盘。 那么还有没有一种有效的方式来应对呢?有,那就是使用 虚拟内存(virtual memory) ,虚拟内存的基本思想是,每个程序都有自己的地址空间

操作系统多进程与文件操作的历史演变

£可爱£侵袭症+ 提交于 2020-03-05 13:24:32
结合历史上的操作系统,说明操作系统为什么要有多进程 六七十年代初,计算机刚刚发展之时,一台计算机只完成一件事情,但由于计算机的处理远远高于人手工的处理,当时的计算机很受人们欢迎;但慢慢地,人们想用少的成本完成更多的事情,便在思考是否可以将两台完成不同操作的计算机用一台计算机来实现。此时,多线程的思想已经慢慢进入人们的思想中。 在上世纪七八十年代,当计算机开始进入多个行业,人们需要让一台计算机干多种事,效率低、耗时长、未充分利用资源的单道批处理系统已经不能满足人们的需求,此时就有人提出在一个程序在执行不需要资源的I/O操作时,将其资源用于另一个程序,同时提高了内存资源以及I/O设备的利用率。而这种思想正是多进程的思想,这是多进程的萌芽。 又过了一段时间,一台计算机完成多种事情又不能满足人们的需求,试想,一家公司,人人都想用计算机做些什么操作,倘若资源只能在一台计算机中进行切换,岂不是又回到了单道批处理系统的思想上,所以人们再次利用多进程的思想,把一台计算机中程序的切换扩展到多台计算机资源的切换,更提高了资源的利用率,这是多进程的发展。 结合历史上的操作系统,说明操作系统为什么引入文件操作? 文件操作是操作系统用于明确磁盘或分区上的文件的方法和数据结构,具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等

js获取计算机操作系统版本

孤街浪徒 提交于 2020-03-02 22:53:13
如题,想要获取当先计算机的操作系统和版本号的话,可以用如下方法。 首先,创建osversion.js文件,文件里面的代码如下 1 var osData = [ 2 { name: 'Windows 2000', group: 'windows_server', identifier: 'Windows NT 5.0', version: '5.0' }, 3 { name: 'Windows XP', group: 'windows', identifier: 'Windows NT 5.1', version: '5.1' }, 4 { name: 'Windows 2003', group: 'windows_server', identifier: 'Windows NT 5.2', version: '5.2' }, 5 { name: 'Windows Vista', group: 'windows', identifier: 'Windows NT 6.0', version: '6.0' }, 6 { name: 'Windows 7', group: 'windows', identifier: 'Windows NT 6.1', version: '7.0' }, 7 { name: 'Windows 8', group: 'windows',