一.为何要有操作系统

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

二.操作系统的位置

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

    1. 显示apache的版本号 XXX@XXX-ThinkPad-Edge-E431:~$ apache2 -v Server version: Apache/ (Ubuntu) Server bui ...

  2. setTimeout()和setInterval()的用法

    JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function& ...

  3. 一步一步在Windows中使用MyCat负载均衡 下篇

    之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye 对于MyCat监控官网还提供一个MyCat-eye w ...

  4. 纯css实现京东导航菜单

    纯CSS代码实现导航菜单,推荐在chrome预览! 预览请点击这里:mygithub <!doctype html> <html lang="en"> &l ...

  5. 微信小程序,超能装的实例教程

    序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...

  6. Linux系统安全需要注意的一些问题

    写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务 如果某一天当你登录服务器发现 /bin/bash –i,python -c 'import pty; pty.spawn(&q ...

  7. EFcore与动态模型(二)

    上篇文章中介绍了如何使用ef进行动态类型的管理,比如我们定义了ShopDbContext并且注册了动态模型信息,下面的代码实现了动态信息的增加: Type modelType = IRuntimeMo ...

  8. 了解 : prevent default

    基本了解是阻止事件之前设置好的事件触发,像是angular router ui里的 preventDefault是这样的. 在$stateChange的是后,可以调用preventDefault 来阻 ...

  9. 使用OpenCL

    //函数原型举例 cl_int clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, size_t param ...

  10. Ansible 入门 (1) - 安装和配置

    本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 ...