首页 > 代码库 > OS与Internet
OS与Internet
1 操作系统
主要区别是:你不想用暴风影音了你可以选择用迅雷播放器或者干脆自己写一个,但是你无法写一个属于操作系统一部分的程序(时钟中断处理程序),操作系统由硬件保护,不能被用户修改。
操作系统与用户程序的差异并不在于二者所处的地位。特别地,操作系统是一个大型、复杂、长寿的软件,
- 大型:linux或windows的源代码有五百万行数量级。按照每页50行共1000行的书来算,五百万行要有100卷,要用一整个书架子来摆置,这还仅仅是内核部分。用户程序,如GUI,库以及基本应用软件(如windows Explorer等),很容易就能达到这个数量的10倍或者20倍之多。
- 长寿:操作系统很难编写,如此大的代码量,一旦完成,操作系统所有者便不会轻易扔掉,再写一个。而是在原有的基础上进行改进。(基本上可以把windows95/98/Me看出一个操作系统,而windows NT/2000/XP/Vista则是两位一个操作系统,对于用户来说它们十分相似。还有UNIX以及它的变体和克隆版本也演化了多年,如System V版,Solaris以及FreeBSD等都是Unix的原始版,不过尽管linux非常依照UNIX模式而仿制,并且与UNIX高度兼容,但是linux具有全新的代码基础
软件运行在操作系统之上,操作系统和硬件的关系密切,和应用软件开发不是一条路
4 操作系统发展史
百度百科-操作系统的发展史
http://baike.baidu.com/link?url=12wJqRKEBD0tXC07ltfKmonr1O4s64FbmhRgFjWi0IOWvPQmaawIHRxqwpEoEqjiRZ7Bmrxpzc53qBHEXwo_tyPVF3K2w3Y30V-s850S77IKl_6_BQ6Ule6MJrpy-gjViIxkwAcDYtvDZzXtcksSShyVOcxciTKB4GrcQEfH42_
峰哥博客-操作系统发展史
http://www.cnblogs.com/linhaifeng/p/6295875.html
资源占用,穿孔卡片,统筹时间,空间/时间复用,技术发展
5 多道技术
现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。
操作系统主要使用来
1.记录哪个程序使用什么资源
2.对资源请求进行分配
3.为不同的程序和用户调解互相冲突的资源请求。
我们可将上述操作系统的功能总结为:处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用
多路复用有两种实现方式
1.时间上的复用
当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个。。。第三个。。。
例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到了I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。
2.空间上的复用
每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。
例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。
有关空间复用的其他资源还有磁盘,在许多系统中,一个磁盘同时为许多用户保存文件。分配磁盘空间并且记录谁正在使用哪个磁盘块是操作系统资源管理的典型任务。
这两种方式合起来便是多道技术
附加:多道程序设计技术
多道程序设计技术是指在内存同时放若干道程序,使它们在系统中并发执行,共享系统中的各种资源。当一道程序暂停执行时,CPU立即转去执行另一道程序。
二 网络基础
单台计算机的软件,操作系统,硬件,单个计算,为了实现计算机之间的通信需求,就想工作中人与人之间的交流,计算机也需要通信,这样就有个语言的需求
对于人类公认的通用语言设定是 English ,那计算机之间的通用语言就是Internet协议
附加:Internet协议知识 - 百度百科
http://baike.baidu.com/link?url=pDs1EnUJ7V5MRRJNKJaoWjFqqLpfFE0ok82sfRaFHIC4taEaEL1WQgKfNHx4DQ_VnrXSUrwyXnjwl0wAvG4Mzq
物理层:010101010电压,光纤,电缆,双绞线,电流
数据链路层:比特流,封装mac地址在头部,为计算机局域网内基本通信,以太网交换机,网卡,mac地址为唯一标示,类似于身份证号码,出生既有,独一无二
网络层:packet包,ip地址,相当于身份证上的姓名,ip协议,arp协议,ip地址子网掩码来区分是否在同一网段,ip地址详细知识略,数据包内有ip地址头部,后有数据,路由器,或者路由功能的多层交换机
传输层:建立端口和应用程序之间的通信,tcp或udp协议,tcp稳定可靠建立联系后传输数据,udp速度快但不稳定数据传输不需要双方在线,每个端口都有各自用途,系统端口占用,用户可以自定义,端口号只有整数,范围是从0 到65535(2^16-1)。
应用层:用户的各自应用程序均工作于应用层,开发应用软件,写到操作系统和传输层提供的端口,例如http,ftp等就是应用层协议,可以自定,可以用现成的协议
附加:OSI七层网络协议 - 百度百科
http://baike.baidu.com/link?url=uT2_blqKUkezi2KUg7FmaamZhvo_x8kos6HJSC1eXZAajB2Ue-DivPDMl6HzXKOKARq1ogofU4BGySVbsgkaH4HsBv_uF6rC4fdd54KlhgWH9CjOjX7nSUHvSxDtKcpmCNlPT-ZGdfbmHazbWT4sbq
socket
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
网络通信
本机ip地址,子网掩码,网关ip地址,dns地址
根OSI模型一层一层的走,数据在应用层开始,经过层层封装,各层都把自己的标示封装在数据头部,然后在物理层转化为高低电流,然后经过现实世界的物理介质传输,到目标地址后经数据链路层转化为比特流,再将数据包层层解包,最后根据数据各个头部的指引信息,将拆出来的数据传给目的地,呈现数据
实际上整个行为很复杂,涉及协议多,涉及安全性也要考虑
附加: 数据包转发演示
https://wenku.baidu.com/view/7db7ddfd783e0912a3162a32.html
附加:DNS过程
OS与Internet