一.为何要有操作系统

没有操作系统的话,计算机同样可以运行,但是程序员要了解到计算机底层各种各样的细节,而操作系统聪明地封装起来了底层这些繁杂的操作,通过向程序员开放一个个的接口,来最终使我们实现对底层硬件的操作流程。
共享使用硬件资源;为使用者指定一些规范,让不同的使用者可以共享使用硬件。
操作系统就是为了让我们更好地使用硬件资源各种硬件资源。
 

二.操作系统的位置

操作系统位于计算机底层硬件和应用软件之间,本质上也是一个软件,由两部分组成。
1.操作系统的内核(运行在内核态,对硬件完成操作)
2.系统调用的接口(运行在用户态,为应用程序提供调用接口)
                   

三.操作系统的功能

1.为应用程序员提供系统调用接口。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,通过简明的调用即可完成对硬件的操作。
2.因为软件都是共享同一套硬件资源,而操作系统能够管理硬件资源,使不同的软件对硬件资源无序的竞争请求变得有序化,即多路复用的技术

四.操作系统的发展

 1.第一代计算机(1945-1955):真空管和穿孔卡片
宾夕法尼亚大学的William Mauchley和他的学生J.Presper Eckert建造了ENIAC。这些机器有的是二进制的,有的使用真空管,有的是可编程的,但都非常原始,设置需要花费数秒钟时间才能完成最简单的运算。这个时期的机器需要一个小组专门设计、制造、编程、操作、维护每台机器。程序设计使用机器语言,通过插板上的硬连线来控制其基本功能。 这个时候处于计算机发展的最初阶段,没有出现程序设计语言,操作系统更是闻所未闻!
2.第二代计算机(1955-1965):晶体管和批处理系统
这个时期计算机越来越可靠,已从研究院中走出来,走进了商业应用。但这个时期的计算机主要完成各种科学计算,需要专门的操作人员维护,并且需要针对每次的计算任务进行编程。 第二代计算机主要用于科学与工程计算。使用FORTRAN与汇编语言编写程序。 出现了最初的操作系统的概念,但是还是需要人的参与,通过把一堆人的输入排到一起输入给计算机处理,在一起打印出来结果,返回给程序员。
3.第三代计算机(1965-1980):集成电路芯片和多道程序
60年代初,计算机厂商根据不同的应用分成了两个计算机系列,一个面向字的,针对科学计算;一个面向字符的,针对商业应用。随着计算机应用的深入,对统一两种应用的计算机需求出现了。这时IBM公司试图通过引入System/360来解决这个问题,这个是服务器的前身;与这个计划配套,IBM公司组织了OS/360操作系统的开发,然后复杂的需求,以及当时软件工程水平低下使得OS/360的开发工作陷入了历史以来最可怕的“软件开发泥潭”。
虽然这个开发计划失败了,但是这个愿望却成为了计算机厂商的目标。此时,MIT、Bell Lab(贝尔实验室)和通用电气公司决定开发一种“公用计算机服务系统”----MULTICS,希望其能同时支持数百名分时用户的一种机器。结果这个计划的研制难度超出了所有人的预料,最后这个系统也以失败结束。不过,MULTICS的思想却为后来的操作系统很多提示。60年代未,一位贝尔实验室曾参加过MULTICS研制工作的计算机科学家Ken Thompson,在一台无人使用的PDP-7机器上开发出了一套简化的、单用户版的MULTICS。后来导致UNIX的诞生。目前UNIX主导了小型机、工作站以及其他市场。也是至今最有影响力的操作系统之一,而Linux也是UNIX系统的一种衍生. 
4.第四代计算机(1980-今):个人计算机
个人计算机发展迅猛,价格不断降低。由于UNIX系统的本身特点,使得其不太适合于在运行在个人计算机上,这时就需要一种新的操作系统。在这一历史关键时候,IBM公司由于低估了PC机的市场,并未使用最大的力量角逐这一市场,这时Intel公司趁机进入,成为了当今微处理器的老大。同时善于抓住时机的微软公司的总裁比尔·盖茨适时地进入了这一领域,用购买来的CP/M摇身一变成为MS-DOS,并凭借Windows成为个人计算机操作系统领域的霸主。

五.多道技术

多道技术:即多路复用,操作系统可以处理来自多个程序发起的多路共享资源的请求。有以下两种实现方式。
 
1.时间上的复用
不同的程序或者用户轮流使用同一个资源,就是该资源在时间上的复用。
我们平常所看到的多个任务并行实际上就是操作系统把不同的程序对CPU的占用分成不同的时间片,轮流占用,所以在用户看来,程序似乎是并行的。实际上这种资源分配的时长以及抢占优先级的问题都是由操作系统处理的。
2.空间上的复用
每个程序都获得较大资源中的一小部分,减少了排队等待的时间,就是空间上的复用。
多个程序进入内存,由硬件提供保护来分割各自的内存,并由操作系统加以控制,这样提高了很多的效率。

六.什么是互联网协议及为何要有互联网协议

互联网协议定义了计算机网络中进行数据交换要遵循的规则,标准和约定的集合,即计算机如何接入互联网,以及通信的标准。
要想完成两台计算机之间的通信,就必须要遵循一定的标准和规则,所以出现了拥有统一标准的互联网协议来规范这样的通信过程。

七.OSI五层模型

1.物理层
两台计算机之间要完成通信,必须要有物理层介入。基于电气特性发送高低电压信号,比如在双绞线上发送高低电平代表不同的二进制信息。
2.数据链路层
定义了电信号的分组方式,即把数据封装为数据帧。
以太网协议中,数据有帧头和数据两部分组成,帧头中包含有mac地址;mac地址独一无二,唯一标识。
3.网络层
解决多个局域网之间的通信,引入IP来区分不同的局域网。
现在常用的协议为IPV4协议,要通过IP地址和子网掩码做与运算后,结果相同,才能判断两个IP是同一个子网。IP数据包也分为报头和数据,报头中含有IP地址等信息。
4.传输层
我们在通过mac和IP找到了想要访问的计算机后,就要通过端口来识别主机上的应用程序了,传输层建立了端口到端口的通信。端口范围0-65535(0-1023为系统占用端口)
这一层的协议为TCP和UDP,TCP稳定,但传输效率低,而UDP相反。
5.应用层
用户使用的程序都是工作在应用层的,但是要遵循各种数据的组织形式,可以使通用的协议(如HTTP,FTP等) ,也可以是自己定义的通信协议。

八.用户上网流程

1.本机获取IP地址,子网掩码,网关IP和DNS的IP
2.打开浏览器,输入想要访问的网址
3.DNS解析,一步步的询问解析出最后想要访问网址的IP地址
4.HTTP协议,加上嵌入符合HTTP的报头数据
5.TCP协议,TCP数据包需要设置双方的端口号。
6.IP协议,TCP数据包嵌入IP数据包,包含双方的IP地址,
7.以太网协议,IP数据包嵌入以太网数据包,包含双方的mac地址。
8.服务器端响应,经过多个网关,想要访问网址的服务器收到以太网数据包,根据IP报头的序号,拼成完整的TCP数据包,读出HTTP请求,做出HTTP响应,再用TCP协议发送回来,本机收到HTTP响应后,就可以显示出网页,完成通信。
 

Python之路-操作系统&网络基础的更多相关文章

  1. python之路之网络基础

    c类地址

  2. python之旅:网络基础之网络协议篇

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  3. Python之路,day3-Python基础

    三级菜单 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, ...

  4. Python之路-Linux命令基础(4)

    作业一: 1)开启Linux系统前添加一块大小为15G的SCSI硬盘 2)开启系统,右击桌面,打开终端 3)为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大 ...

  5. python之路2(基础详解)

    python一切都是对象: 列子:

  6. Python之路 day2 文件基础操作

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa ''' #f,文件句柄;模式 a : append 追加文件内容 f = open( ...

  7. Python之路,day12-Python基础

    Mysql数据库操作 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据 ...

  8. Python之路,day11-Python基础

    回顾:进程一个程序需要运行所需的资源的集合每个进程数据是独立的每个进程里至少有一个线程进程里可以有多个线程线程数据是共享的一个进程的多个线 6程可以充分利用多核cpumultiprocessing p ...

  9. Python之路,day8-Python基础

    ***面向对象的好处*** 更容易扩展.提高代码使用效率,使你的代码组织性更强,更清晰 更适合复杂项目的开发 封装 把功能的实现细节封装起来,只暴露调用接口 继承 多态 接口继承 定义 类----&g ...

随机推荐

  1. californium 框架设计分析

    Californium 源码分析 1. Californium 项目简介 Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NO ...

  2. PHP 用session与gd库实现简单验证码生成与验证的类

    验证码是为了防止机器灌水给网站带来污染以及增加服务器负担而出现的.目前大大小小的网站都有验证码.今天自己实现了一个简单的验证码类.说简单是因为没有加一些干扰的弧线等等,只是将文字旋转了一下.当然,因为 ...

  3. iphone在iframe页面的宽度不受父页面影响,避免撑开页面

    工作中有个需求,就是产品页面通过iframe引用显示产品协议页,要求不要横向滑动,只需要竖向滑动,但在iphone中引用的iframe会撑开父页的宽度,而在android端浏览器这不会. <di ...

  4. 在vi或者vim中显示行号

    1. 为了显示行号,在vi/vim编辑器中执行一下命令中的一条 :set number 或者 :set nu 2. 为了关闭行号,在vi/vim编辑器中执行下面命令 :set nu! 如果你想要每次启 ...

  5. [编织消息框架][rpc]使用篇

    rpc 分两部份,一个是调用者,另一方是服务提供者 调用者只关心那个服务,传相应参数,返回内容就可以 而提供者根据调用相应服务同参数,工作处理后响应内容即可 根据他们的关系可以用JAVA 接口同实现类 ...

  6. CSS常用字体Unicode 编码

    在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unicode 编码来写字体名称可以避免这些错误. ...

  7. JDK 安装过程

    1.首先是下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.下载完 ...

  8. java线程学习(二)

    多个线程并发抢占资源是,就会存在线程并发问题,造成实际资源与预期不符合的情况.这个时候需要设置"资源互斥". 1.创建资源,这个地方我创建了一个资源对象threadResource ...

  9. 安全体系(三)——SHA1算法详解

    本文主要讲述使用SHA1算法计算信息摘要的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 安全体系(二)——RSA算法详解 为保 ...

  10. x01.Weiqi.13: 鼎力推荐

    鼎力推荐 : 点击后即可观看,小伙子讲的很有深度. 说到深度,自然离不了深度学习.AlphaGo 的横空出世,似乎很有学习的必要. MuGo: 点击下载后,发现是 python,自然免不了一番学习,好 ...