Python学习week1-计算机基础

1、计算机与操作系统简介

1.1、计算机组成

1.2、计算机中断

# 软中断(si):由应用程序发起对cpu的中断;

# 硬中断(hi):由硬件设备发起对cpu的中断;

1.3、cpu平台介绍

(1)m68000,m68k ---> 摩托罗拉cpu;

(2)Power---> IMB、第一个多核CPU,功耗大;

(3)PowerPC ---> IBM、简化版的Power;

(4)Sparc,UItraSparc ---> SUN公司cpu;

(5)AIpha ---> DEC的cpu;

(6)x86、x86_64 ----->英特尔cpu;

(7)amd64 -----> AMD的cpu,真正意义上的第一颗64位的cpu;

(8)ARM -----> 现代手机cpu平台,只卖规范,不会直接生产硬件;

1.4、二进制

# 二进制:由0和1两个字码来表示的数,基数为2,进位规则为“逢二进一”;

# 计算机内部识别的最小单位为:字节byte,1byte=8bit;

0000 0001 = 1
0000 0010 = 2
0000 0100 = 4
0000 1000 = 8
0001 0000 = 16
0010 0000 = 32
0100 0000 = 64
1000 0000 = 128
1.5、操作系统
# 操作系统(OS):通用目的的软件程序,主要功能如下:
(1)硬件驱动
(2)进程管理
(3)内存管理
(4)网络管理
(5)文件管理
(6)安全管理

2、各大操作系统分支介绍

(1)BSD分支

  --->Sysv

  --->BSD Lite

  --->FreeBSD--->Mac OS,IOS

  --->NetBSD

  --->OpenBSD:最安全的BSD,一般用于防火墙内核;

(2)Slackware--->Suse

(3)Debian--->Ubuntu--->Linux Mint

(4)Redhat

  --->Redhat 9(2003年停止维护)--->面向PC版本--->Fedora(社区版,版本更新频繁)

  --->RHEL(Redhat Enterprise Linux)--->RHEL 7.0

  --->Centos 7.0

(5)Gentoo--->Daniel Robbins(BSD作者之一)创建

(6)LFS--->Linux From Scratech(从零构建linux)

(7)Android--->Linux+Jvm+Java

(8)IOS--->FreeBSD+Object-c(swift)

3、开源协议

# 开源协议图:

 

# 开源协议说明:

(1)BSD授权:鼓励代码共享,但需要尊重作者著作权;

(2)Apache Licence 2.0:对商业软件友好;

(3)GPL:出发点是代码开源,免费使用和修改,衍生代码的开源使用,但不允许衍生代码作为闭源的商业软件发布和销售;

(4)LGPL:是一个主要为GPL类库使用设计的开源协议;(仅调用库,不需要开源)

(5)GUN:是一个软件组织,并不是协议;

4、开发接口标准

4.1、二进制代码

# 二进制代码:计算机指令,例如:add命令--->汇编器--->二进制格式指令

4.2、C语言程序的执行过程

# 预处理--->编译--->汇编--->链接

4.3、程序调用

# 程序调用实际上是调用的共享代码模块:库

windows:dll文件;

linux:so文件;==>shared object

4.4、什么是ABI接口

# 总所周知,windows下的应用程序到linux下是无法运行的;

# 一个应用程序一旦制作成为二进制格式,其适用的平台也就固定,编译成exe格式的就只能在windows平台一运行,编译成elf格式的就只能在类unix平台运行;

# 这就是就是由二进制接口规则定义的,也就是ABI;

# 总结:ABI是一种操作系统接口格式,也是一种规范,定义了系统平台所属;

4.5、什么是API接口

# API是一种应用编程接口,程序员一般针对API接口进行编码;

# windows和linux 的应用程序格式虽然不一样,但是编码接口API是可以兼容的,也就是说:程序员在windows平台下以兼容模式编写的程序源代码,在linux平台是兼容的;

# 面向库的编程,程序员写的程序源代码是面向API进行的,一旦编译成二进制格式,就是面向ABI了;

5、用户空间与内核空间

5.1、User space 与 Kernel space

# 简单的说:内核空间就是linux内核的运行空间,用户空间是用户程序的运行空间;为了安全,它们是相互隔离的,即使用户程序崩溃,内核也不受影响;

# 内核空间可以执行任意命令,调用一切系统资源;用户空间只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(又称为system call),才能向内核发出指令;

例如:

1 str=“hello” #用户空间
2 x=x+2
3 file.write(str) #切换到内核空间
4 y=x+4 # 切换到用户空间

上面代码:1和2行是简单的赋值运算,在用户空间执行;3行需要写入文件,就需要切换到内核空间,因为用户不能直接写文件,需要通过内核来完成操作;

原文地址:https://www.cnblogs.com/soulgou123/p/9365581.html