Python学习第一天----计算机基础

简介:

一、学习计算机基础的目的

    再高级的编程语言都是运行在操作系统之上的,而操作系统又是运行在硬件基础之上。所以在开始学习编程之前需要深刻的了解并熟知计算机的基础知识,必须知道计算机能干什么,怎么干的,包括硬件基础及操作系统基础。


二、计算机硬件发展史

    计算机的定义:是现代用于高速计算的一种电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。

    发展史:

    原型或者说灵感起源于中国

    1946年2月14日情人节这天,世界上第一台电子计算机“电子数字积分计算机ENIAC”在美国宾夕法尼亚大学问世。

    电子管时代---晶体管时代---集成电路时代---大规模超大规模集成电路

三、计算机的组成

    硬件系统的组成:运算器,控制器,存储器,输入设备,输出设备

    硬件系统---操作系统---应用软件

    操作系统其实也是一个系统软件,用来控制和协调计算机及外部设备,应用软件就是例如QQ、魔兽世界等此类软件。

wKiom1jCj5Gxny4hAAApfJAV4Xo371.png-wh_50


四、计算机硬件介绍

    CPU、存储器、视频监视器、键盘控制器、Usb控制器、硬盘控制器、及显示器、键盘、鼠标、、硬盘、声卡、显卡等等都属于计算机硬件。

1.CPU   

     CPU负责计算,内存及硬盘负责存储信息,鼠标键盘用来给计算机输入指令,显示器用于输出运算信息。

    CPU从内存中取指令--》解码--》执行,然后再循环往复执行此操作,每个CPU都有自己的一套指令集,不同架构的CPU运行不了不支持此指令集的程序。

    关于寄存器的概念:

    寄存器分类:通用寄存器(用于保存变量和临时结果)、程序计数器(记录程序执行的位置)、堆栈指针(先进后出,和队列正好相反)、程序状态字寄存器(很重要的一个寄存器,包含了CPU优先级、CPU模式、还有其他控制位)

    CPU有两种模式:用户态和内核态,当内核态时,cpu可以执行所有指令,也就意味着它可以调度硬件,但是在用户态下只能执行部分指令集,也就是说不能够调度硬件。用户态和内核态之前的切换通过“系统调用”来实现。 

    多线程和多核芯片:CPU中有L1、L2、L3各种缓存,缓存的制作材质与CPU的材质相同,所以cpu访问缓存时没有延迟。为了增强CPU的性能,intel公司提出了多线程的概念,进程是资源单位而线程才是CPU的执行单位。

2.存储器

    理想的存储器当然是速度快容量大价格便宜,但目前的技术发展的水平来看是不可能的。

    存储器大概有以下几种:寄存器、高速缓存、内存、硬盘、磁带,从前到后基本上是速度越来越慢,容量越来越大,体积也越来越大。L1缓存即寄存器在32位系统中大小为32*32,在64位系统中为64*64,与CPU的速度一样快。高速缓存就是L2,当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,则称为高速缓存命中,否则称为高速缓存未命中,这时候就要去内存中读取数据。

    主存:即内存,是RAM,断电丢失。ROM是非易失性随机访问存储,EEPROM是电可擦除ROM是非易失性的。CMOS:易失性,可存储时间及日期,其他一些硬件的配置参数,启动磁盘等信息,通常有一块电池供电,位于主板上。

    硬盘:判断硬盘的两个指标,一个是转速,一个是容量。8个bit=1Bytes,1024Bytes=1KB,1024K=1MB,1024MB=1GB,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位硬盘是由许多盘片堆叠而成的,中间有盘柱,还有机械手臂,每个盘片都有一个磁头。一个扇区的值为512个字节,在Linux系统中,数据以Block块进行存储。八个扇区形成了一个块,即4KB。数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间 ,寻道时间就是机械手臂找到数据所在的磁道的时间,延迟时间就是磁头在磁道上找到所需数据的平均时间。

    虚拟内存:根据现实情况,计算机的内存在某些时候很显然是不能满足大程序的运行的要求的,比如物理内存大小是2G,而这时有一个8G的程序需要运行,那么计算机这时候就需要通过存储器管理单元MMU找到硬盘中对应的一块地方并将其划分为虚拟内存。Linux系统下的swap分区其实就是虚拟内存

    上下文切换:从一个程序切换到另一个程序上去运行,可以提升系统的性能。

    磁带:容量大,常用于大型数据库系统备份

    I/O设备:包括设备控制器和设备自身,每一个插硬件的地方都有一个设备控制器。

    总线:如图wKiom1jCcoiABnFjAAIHHgd2Qvk684.png-wh_50

    北桥连接的都是诸如:高速缓存、CPU、内存等高速设备

    南桥连接的都是诸如:硬盘、显卡、USB设备、声卡等低速设备

五、计算机启动过程

    第一步:通电

    第二步:运行BIOS,检测CPU、内存、硬盘等

    第三步:读取CMOS中的信息,包括硬件配置信息及系统启动盘选择

    第四步:读取启动盘的第0磁道的第一个扇区,也就是MBR(主引导记录),共512个字节,前446个              字节为引导信息,中间64个字节为分区信息,后2个字节为标志位

    第五步:根据MBR读入相应的启动模块从而启动操作系统

    第六步:这时候操作系统再询问BIOS,获取配置信息和硬件信息,并检测其驱动程序的存在,如果             没有会提示安装,如果都有驱动程序,操作系统便将它们调入内存运行,然后创建相应进             程,运行图形化用户界面。至此,计算机启动完成。

附:linux启动过程

第一步--加载BIOS

    打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

第二步--读取MBR

    众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

第三步--Boot Loader / Grup

    Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

    Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。

    我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。

    系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的     操作系统。

第四步--加载内核

    根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,booting the kernel”。

系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

第五步--用户层init依据inittab文件来设定运行等级

    内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

    其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有X-Window支持的多用户模式

6:重新引导系统,即重启

关于/etc/inittab文件的学问,其实还有很多。

第六步--init进程执行rc.sysinit

    在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。

启动第七步--启动内核模块

    具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序(/etc/rc.d/rc $RUNLEVEL    #$RUNLEVEL为缺省的运行模式 )

    根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

第九步--执行/etc/rc.d/rc.local

    你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

# This script will beexecuted *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

第十步--执行/bin/login程序,进入登录状态

    此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。




本文转自 AltBoy 51CTO博客,原文链接:http://blog.51cto.com/altboy/1905268
相关文章
|
7天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
11 1
|
10天前
|
算法 Python
1193: 最简单的计算机(python)
1193: 最简单的计算机(python)
|
11天前
|
Python
Python文件操作学习应用案例详解
【4月更文挑战第7天】Python文件操作包括打开、读取、写入和关闭文件。使用`open()`函数以指定模式(如'r'、'w'、'a'或'r+')打开文件,然后用`read()`读取全部内容,`readline()`逐行读取,`write()`写入字符串。最后,别忘了用`close()`关闭文件,确保资源释放。
17 1
|
3天前
|
Python
python学习3-选择结构、bool值、pass语句
python学习3-选择结构、bool值、pass语句
|
3天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
3天前
|
Python
python学习12-类对象和实例对象
python学习12-类对象和实例对象
|
3天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
3天前
|
Python
python学习10-函数
python学习10-函数
|
3天前
|
存储 索引 Python
python学习7-元组
python学习7-元组
|
3天前
|
Python
python学习8-集合
python学习8-集合

热门文章

最新文章