一.为何要有操作系统

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

二.操作系统的位置

操作系统位于计算机底层硬件和应用软件之间,本质上也是一个软件,由两部分组成。
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. CountDownLatch类的使用

    java.util.concurrent.CountDownLatch是一个并发构造,它允许多个线程等候特定的操作完成. CountDownLatch用一个数字初始化,通过调用countDown()方 ...

  2. 【转】IntelliJ IDEA2016.1 + maven 创建java web 项目

    最近开始使用idea 来写java项目了,这个很流行,相比Eclipse方便了很多.功能多了,相对应的使用的复杂度也较高了,因为网上很多的使用和创建项目的简单教程,都是基于老版本的,每个新版本都有不一 ...

  3. [solr] - solr5.2.1环境搭建 - 使用tomcat做为容器

    这里忽略solr其他依赖环境的搭建,这里搭建solr5.2.1.使用Java1.7.0_17,tomcat使用6.0.36版本的. 1.下载solr压缩文件 Solr是Apache基金组织在lucen ...

  4. SpringBoot实践 - SpringBoot+MySql+Redis

    大家都知道redis的强大之处,在目前应用上也是大显神威. 先说说他的优点: 1 读写性能优异 2 支持数据持久化,支持AOF日志和RDB快照两种持久化方式 3 支持主从复制,主机会自动将数据同步到从 ...

  5. 4G最快网速相当于30M宽带

    [导读]据北京移动方面介绍,目前其4G网络的覆盖范围包括:东西北三环.南至两广路以内的地区:清华北大.国贸CBD及园博会等地区. 在4G年内发牌已成定局的背景下,各运营商都在加快布局,北京移动近期就推 ...

  6. BZOJ 1019 :[SHOI2008]汉诺塔(递推)

    好吧蒟蒻还是看题解的 其实看到汉诺塔就该想到是递推了 设f[i][j]表示i个在j杆转移到另一个杆的次数 g[i][j]表示i个在j杆转移到那个杆上 可得 f[i][j]=f[i-1][j]+1+f[ ...

  7. 用Ajax实现自动刷新news功能

    这是Ajax应用的一个小实例:在页面中自动刷新功能,比如整个新闻页面中某一个小版块的内容,无需刷新整个页面就可以自动更新: 1.首先创建简单的页面元素: <body> <input ...

  8. [笔记]关于支持向量机(SVM)中 SMO算法的学习(一)理论总结

    1. 前言 最近又重新复习了一遍支持向量机(SVM).其实个人感觉SVM整体可以分成三个部分: 1. SVM理论本身:包括最大间隔超平面(Maximum Margin Classifier),拉格朗日 ...

  9. 使用Nuget管理dll

    前言 nuget 已经不是什么新东西,它是vs的一个扩展工具,可以让我们在项目中添加.删除.更新引用变得更加快捷方便.现在有许多传统公司对dll的管理还是很落后的,有些甚至时通过发送dll文件,这样做 ...

  10. 程序员的自我修养:高效使用Google解决问题

    如果票选近二十年最伟大的发明,我相信搜索引擎肯定会占据一个不容小觑的位置,它不单是一项发明,更是一项成就,最大程度消灭了信息的不平等.既然人人都可以接触到海量的信息,那么衡量信息财富多寡就只剩下技巧这 ...