03、江苏专转本(专业课笔记)第三章、计算机软件

您所在的位置:网站首页 软件工程专转本课程 03、江苏专转本(专业课笔记)第三章、计算机软件

03、江苏专转本(专业课笔记)第三章、计算机软件

#03、江苏专转本(专业课笔记)第三章、计算机软件| 来源: 网络整理| 查看: 265

文章目录 前言一、计算机软件概述1.1、计算机系统组成1.2、认识程序1.3、软件(特性、知识产权、许可证)1.4、软件分类 二、操作系统OS2.1、认识操作系统2.2、BIOS(输入输出系统)2.3、操作系统任务2.3.1、任务的介绍2.3.2、多任务处理2.3.3、虚拟存储器 2.4、OS的设备管理2.5、多种操作系统介绍 三、算法与程序设计3.1、算法3.2、程序设计语言认识程序语言深入了解程序设计语言(三类) 参考文章

前言

该笔记是当时学习专业课程留下来的学习笔记。

如需转本相关资料也可加2023/24/25江苏专转本咨询群:828303961,或者私聊博主呀。 群里提供转本咨询|转本资料|转本问答等服务,另外提供编程解答(群主搞java开发的随便问)。有任何问题都可以在群里问!希望大家一起交流进步~欢迎友友们入群学习。 在群里同样也有22届计算机上岸南信大、苏科大、南工程学长学姐可以进来咨询。

转本经验(b站视频):2022年江苏专转本计算机大类上岸南工程经验分享与辅导

所有博客文件目录索引:博客目录索引(持续更新)

一、计算机软件概述 1.1、计算机系统组成

计算机系统=硬件+软件,如下图:

image-20210220113657162

硬件、软件缺一不可。硬件能力非常有限,速度极高;没有软件,硬件什么任务都完不成,计算机是通过软件进行信息处理的,针对于不同的任务、需求使用不同的软件完成。 1.2、认识程序

程序:就是使用源代码来告诉计算机做什么和如何做的一组指令,这些指令都是计算机能够理解并能够执行的一些命令。

程序的特性:

用于完成某一确定的信息处理任务。使用某种计算机语言描述如何该任务。预先存储在计算机中,启动运行后才能够执行任务。

程序与数据关系:

程序所处理的对象和处理后得到的结果统称为数据(分为输入数据和输出数据)。程序必须处理合理的输入数据,否则不会产生有意义的输出。

程序与软件关系:

软件既包含程序也包含程序相关的数据与文档:程序是软件的主体 数据:程序运行过程中处理的对象和必须使用的一些参数。文档:与程序开发、维护及操作有关的一些资料,例如设计报告、维护手册和使用指南。 "软件"强调的是产品、工程、产业或学科等宏观方面含义;"程序"更侧重技术层面的含义。 1.3、软件(特性、知识产权、许可证)

软件特性:

不可见性(无形的,不能被人们直接观察、欣赏和评价)。适用性(可以适应一类应用问题的需要)。依附性(依附于特定的硬件、网络和其他软件)。复杂性(规模越来越大,开发人员越来越多,开发成本也越来越高)。无磨损性(功能和性能一般不会发生变化)。易复制性(可以非常容易且毫无失真进行复制)。不断演变性(软件的生命周期,版本不断迭代)。有限责任(有限保证,简单来说就是不会保证软件不会出现bug等问题)。脆弱性(黑客攻击、病毒入侵)。

计算机软件与知识产权:软件是智力劳动的成果,受到知识产权(版权)法的保护。

版权授予软件作者权利:拷贝、发布、修改、书名、出售…保护产权目的:购买一个软件,用于仅仅得到该软件的使用权,并没有获得它的版权,随意进行软件拷贝与分发是一种违法行为。

软件许可证(license):

软件许可证也称为"许可证协议",规定了计算机软件使用方式的法律合同,软件使用有哪些额外限制,有哪些额外的权利等。许可证的类型:单用户许可证、多用户许可证、并发用户许可证(例如同时在线)、定点许可证。许可证形式:拆封许可证、最终用户许可证。相关要求如下: 不能再次出售;只能安装在一台电脑上;不得进行反汇编,破译;不得将其组成部分使用在多台计算机上使用;不得出租或出借使用。 1.4、软件分类

根据软件定位、软件用途分类

软件使用分类:

商品软件共享软件(试用软件):具有版权,可免费试用一段时间,允许拷贝和散布(不可修改),试用期满之后需交费才能使用。自由软件(开源软件):用户可共享,并允许随意拷贝、修改源代码,允许销售和自由传播。但是对软件源代码的任意修改必须向所有用户公开,还必须允许此后的用户进行拷贝和修改的权利。免费软件:无需付费即可获得的软件。

注意:自由软件一定是免费软件;而免费软件不一定是自由软件。

计算机软件根据用途分类:

系统软件:不是为了解决某种具体应用,而是为了给用户使用计算机提供方便、给应用软件的开发与运行提供支持、使计算机有效、安全、可靠地运行。应用软件:专门用于帮助最终用户解决各种各样具体应用问题的软件。 分类(按开发方式):定制应用软件(例如学校教务系统,酒店管理系统)、通用应用软件。

介绍系统软件

系统软件:给用户使用计算机提供方便、给应用软件的开发与运行提供支持、使计算机有效、安全、可靠地运行的软件。

例如:输入/输出系统(BIOS)、操作系统(windows,linux,unix)、程序开发工具与环境(如C语言编译器等)、数据库管理系统(DBMS)、手实用程序(如磁盘清理程序、备份程序、杀毒软件、防火墙)。DBMS(数据库管理系统):举例 ACCESSVFP(Visual FoxPro):Microsoft公司推出的数据库开发软件SQL ServerMysqlDB、DB2Oracle(甲骨文) 特性: 与硬件有密切关系,能对硬件进行统一控制、调度与管理。具有通用性,能为多种应用软件的开发和运行提供支持与服务。在任何计算机系统中,系统软件都是必不可少的。购买计算机时,计算机供应厂商会提供用户一些基本的系统软件,否则计算机无法工作。

最重要的系统软件:

操作系统(OS,operating system):它是最重要的系统软件,几乎所有计算机都需要OS,可以在操作系统上进行开发使用应用软件。程序设计语言处理系统:编译器、解释器、汇编程序(汇编器)、开发工具与平台。数据库管理系统(DBMS)实用程序。 二、操作系统OS 2.1、认识操作系统

为什么有操作系统?对于没有安装任何软件的计算机称为裸机,其是无法直接使用,一般都是安装了操作系统后来对计算机进行操作。

操作系统(OS,operating system):用于执行各种具有共性和基础性操作的软件,是重要的系统软件,几乎所有的计算机都要安装OS。

OS屏蔽了计算机中几乎所有的物理设备的技术细节,为开发和运行其他软件提供了一个高效、可靠的平台。

OS的组成:操作系统是在硬件平台上的,屏蔽技术细节

image-20210226181929131

内核介绍:

NT内核:例如Window XP、Windows 7 操作系统、Windows 8 操作系统;windows Server2003、2012服务器操作系统,Windows Phone 手机操作系统。还有平板电脑都是使用的该内核。Linux内核:安卓操作系统、Linux操作系统(大多用作为服务器)Darwin内核(类Unix系统):ios操作系统。

操作系统的四种类型:

任务处理功能型:一般PC机使用的操作系统都具有该功能。网络操作系统:一般网络服务器上运行的os(服务器上的操作系统),具有强大的多用户并发处理能力。实时操作系统:一般使用于军事指挥和武器控制系统、电网调度和工业控制系统,证券交易系统。嵌入式操作系统:嵌入式计算机应用,例如冰箱、车载电视、手机等很多领域。

OS的三个主要作用:

为运行的程序管理和分配各种软硬件资源。(依靠内核,其包含功能,当电脑开机前会将操作系统内核读取到内存条中)。为用户提供友善的人机界面(图形用户界面GUI),很早之前是DOS界面(通过输入命令来操控计算机)。为开发或运行应用程序提供了高效率的平台。

小常识:一般操作系统会安装到C盘中(举例占据5G的容量),当电脑开机启动时会将其中操作系统内核(占据操作系统的一部分)装载到内存中(且常驻于内存中)。我们在开机启动后如点击软件会得到快速响应都是基于操作系统内核的。

image-20210226183313872

开机启动内存占用情况如上图。 2.2、BIOS(输入输出系统)

BIOS(Basic Input Output System):基本输入输出系统,其是存放在主板上的只读存储器(Flash ROM)中的一组程序(固件)。该程序只读,无法修改,但可以将BIOS进行升级。

该程序是二进制数字编写的机器语言。

主要包含的四个部分(程序):

加电自检程序(POST):用于诊断计算机中的故障。系统自举(装入)程序:装入并启动OS工作。CMOS设置程序:可设定和修改计算机配置基本外围设备的驱动程序:控制基本的I/O设备。

计算机断电后,BIOS程序和CMOS中的数据仍保持不变。CMOS电池可进行供电。

BIOS与操作系统的启动过程如下:

CPU发出命令让BIOS执行加电自检程序,若有故障则发出相应的故障提示。接着CPU让BIOS执行自举装入程序,开始执行。CPU询问CMOS从何处启动,告知先从硬盘读出引导程序。CPU告知从硬盘中读出引导程序,接着装入到RAM(内存条)中,接着CPU执行内存条中的引导程序。继续从硬盘中将操作系统内核装入到内存条中,开始运行操作系统。最终显示初始界面。(其中也使用到了基本外围设备的驱动程序来控制I/O设备,如显示器,键盘,鼠标)。

image-20210226184904338

④⑤步都是装入引导程序两者相同。 2.3、操作系统任务 2.3.1、任务的介绍

单任务与多任务

在计算中包含单任务处理与多任务处理,计算机执行一个任务就对应着运行一个应用程序。每启动一个应用程序,os就会打开一个相应窗口,通常一个窗口就是一个任务。

单任务处理:前一个任务完成后才能够启动后一个任务的运行,按顺序执行的。多任务处理:允许计算机同时执行多个任务,任务是并发执行的。(现在大多是多任务处理) 优点:能够大大提升用户工作效率与使用效率。

认识前台任务与后台任务

前台任务:能接受用户输入(击键或按击鼠标)的窗口只能有一个,称为活动窗口。

后台任务:除了前台任务之外都属于后台任务,当对应任务称为后台任务时一般会暂停运行但不排除会在后台运行的软件,如QQ、网易云音乐等,都可以在后台执行。

区别:前台任务对应的窗口(活动窗口)位于其他窗口的前面。并且前台任务窗口的标题栏颜色也会与其他任务窗栏不一样。

共同点:都是在计算机中运行。

前台与后台任务切换:为了输入信息到某个后台任务中去,必须切换窗口。例如单击要激活的后台任务窗口的任何部位或单击任务栏对应的任务按钮。

关于如何结束任务的运行

每一个任务都会占用很大一部分的系统资源(如存储器、cpu、屏幕等),当不再需要使用应用时就应该退出该应用程序,释放资源。

方式:通过点击应用右上角的x号或调用任务管理器强制关闭应用。

2.3.2、多任务处理

CPU芯片瞬间可同时执行的任务数据:

单核CPU:1双核CPU:2四核CPU:4 ,其他核的依次递推

为什么可以实现多任务处理?

CPU速度极高,且电脑中通常不止一个CPU,进行多任务处理可以充分发挥CPU的性能。CPU与I/O(外围设备)可以并行工作,CPU不用等待I/O完成。各个外围设备也可以进行并行工作。

针对于多任务处理要解决哪些问题呢?

任务多,CPU少的情况下,如何进行管理与调度任务。存储器空间在内存满的情况下如何分配与管理。I/O设备与I/O操作如何管理控制。

认识CPU管理(处理器管理)

目的:让CPU轮流为所有任务服务。

原则:公平性;优先级。

方法:如何分配任务

按时间片轮转分配每个任务时间。(一个时间片为10-20ms)。时间片轮转调度按优先级调度。 CPU的调度策略:当前的进程需要进行IO操作或时间片结束后,操作系统需要从就绪的队列中选择一个进程,可以设置对应任务的优先级,优先级越高则越容易被优先分配到时间片。

使用时间片示图如下:

image-20210301122154966

时间片轮转调度介绍:通过引入时间片来给每个程序(依照队列)分配指定时间轮流执行。时间片使用了叫做时间片轮转法(Round-Robin,RR),时间片是一个很小的时间单位,通常为10s-100ms数量级,当进程用完了分给该进程的时间片,则会继续队列切换到下个时间片进行执行,注意这个切换的过程也是需要一定时间的(会更新各种表和队列),有时称为上下文切换,需要5ms时间。若是时间片设置的太短会导致过多的进程切换,降低了CPU的效率;设置太长会导致对于短的交互请求的响应变差,将时间片设置为100ms是相对于比较适中的。 2.3.3、虚拟存储器

首先先介绍一个内存储器,内存储器空间分为两个部分:系统区、用户区。

系统区:用于存放操作系统的内核。用户区:一般用于存放运行程序,当前所运行的一些数据。

一般内存储器的内存由8G、16G、32G…,对于容量越小的内存储器就会出现一些问题,当内存储器在运行期间内存满了怎么办,此时就出现了解决方案—虚拟存储器。

当内存储器用户区存满时,会使用一个最近最少使用算法(LRU算法),将暂时不使用的程序与数据暂存到虚拟内存中,如下图:

image-20210301125614481

虚拟内存:它是硬盘中的一块区域,虚拟内存=物理内存+虚拟内存。具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量是由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而其成本却又接近于外存。

介绍该"存储管理"需要解决的问题

①为每个任务分配存储空间,任务结束后收回存储空间。

②对存储空间进行保护

保护操作系统所在区域不被应用程序修改。保护每个应用程序的私有区域不被其他程序修改。

③对存储空间进行扩充,使应用程序的存储空间不受实际存储容量大小的限制。

上面所说的问题解决方案就是使用的虚拟存储器。

2.4、OS的设备管理

操作系统中的设备管理程序主要负责以下两个任务:

对系统中的各种输入输出设备进行管理。处理用户或应用程序的输入输出请求,更方便、有效、安全地完成输入输出操作。 2.5、多种操作系统介绍

微软的windows

操作系统演变:

从95->98->2000->xp到之后的windows8、windows10多个版本迭代,一般这些用于PC个人用户机。

还包含了服务器的操作系统如server2000。

特点:提供了多任务处理能力,采用图形用户界面,在个人计算机上广泛使用,其垄断了PC机市场90%的份额。该操作系统由大量的第三方软件及硬件,用户多相对于产品软件也会更多。

缺点:不稳定,系统会越来越慢,安全性不好,有漏洞。

Unix操作系统

因特网上首先流行的操作系统是Unix,对于不同机型(个人计算机、工作站、服务器、大型机与巨型机)都有不同的版本。

特点:功能强大、可移植性好,可伸缩性和互操作性强、网络通信功能强,安全可靠。

之后出现Linux系统,Linux系统开始风靡起来了。

Linux操作系统

应用于网络服务器、个人计算机、巨型机、嵌入式系统(如手机、游戏机、电子书阅读器、路由器等等)中发挥了巨大的威力。

Linux操作系统是开源的,现如今已有超过300个Linux发行版,很多系统都是使用的Linux内核。

Android操作系统

Google推出的系统,使用Linux为基础的操作系统,是自由及开放源代码软件。

支持处理器类型:ARM、MIPS、Power Architecture、Intel x86。

现如今安卓也在平板电脑市场急速扩张!!!

IOS操作系统(苹果)

IPhone、IPod touch、ipad以及Apple TV都是使用的IOS操作系统。

特点:可使用多点触控直接操作,例如滑动、轻按、挤压与旋转。

支持硬件:基于ARM架构的CPU。

三、算法与程序设计 3.1、算法

算法是什么?

算法是解决问题的方法与步骤。在构建与描述算法时主要有三种表示方式:文字叙述、流程图表示、伪代码描述。 文字描述:其缺点是容易产生歧义,叙述很难清除表达算法逻辑。流程图:使用图表形式描述了算法所执行操作的顺序与执行操作的流程。缺点是若是算法复杂,使用流程图理解也会很困难。伪代码:用来描述算法的一种语言,类似于自然语言,又与真实的编程语言相似的语言来进行描述代码过程,其优点是结构清晰,结构与真实编程语言相似,很容易使用编程语言写出来。

算法包含了四个基本内容:

正确性:给定有效输入后,经过有限时间计算得出正确的结果。简单性:容易理解,容易验证正确性,容易调试。在保证一定效率的情况下要求算法简单。时间复杂性:当问题的规模n充分大时,运行该算法所需要的时间的数量级表示。空间复杂性:除了原始数据外,算法中额外占用的存储空间大小则为空间复杂性。

算法所解决的是一类问题而不是一个特定的问题。

算法满足的四个条件:

确定性:每一步操作都必须清除明确。能行性:每一步都是计算机能够执行的。有穷性:能够在有限步中结束,运行会有终止点。有输出:结束至少产生输出数据或者改变状态。 3.2、程序设计语言 认识程序语言

程序设计语言大致分为三种类型:机器语言、汇编语言、高级程序设计语言。

程序:是为了用计算机解决某个问题而采用程序设计语言编写的一个指令序列。其目的是为了通信,用于让计算机执行指定的工作,程序最终会交给计算机去执行。

重要:在计算机硬件中只识别0与1(二进制)。

程序语言有哪些呢?

①程序设计语言:编写适合于不同用途的程序

机器语言、汇编语言、高级语言(如C语言、C++、Java)

②数据描述语言,用于描述数据(文档、音乐、图像、视频等)的规范、结构与文件格式。

HTML、XML、JSON、MIDI、MP3、OpenGL、JPEG

③脚本语言:用于编写嵌入在文档中的程序设计语言。

VBA、VBScript、JavaScript

④计算机通信协议,如用于计算机之间通信的会话(请求-应答)的语法。

HTTP、POP3、SMTP、FTP、Telnet、TCP…

⑤数据库语言,用于数据操作

SQL 深入了解程序设计语言(三类)

机器语言

机器语言:就是计算机的指令系统,其指令是使用二进制编码表示的。使用机器语言编写程序,就是说在使用二进制来编写程序。

优缺点:优点是可以直接被计算机执行(硬件只能识别二进制);缺点是记不住、难理解、效率低、不易维护。现在一般使用高级语言来进行编写程序。

机器语言的指令例子如下:

image-20210303114003016

机器程序都是由二进制来表示的!!!

汇编语言

汇编语言是使用助记符来表示机器语言指令中的操作符与操作数,换个意思来说就是原本执行+我们用机器语言二进制表示,而汇编中则是一个英文单词表示即助记符,这样的话能够提高编写程序的效率。

image-20210303114323560

MOV AX 383:MOV是数据传送指令,该代码相当于AX=383,将数字383移动到AX这个地址中(简单说就是给变量赋值)。ADD BX AX:ADD是加法指令,该代码相当于BX=BX+AX,将BX与AX地址的数字相加放置到Bx地址中。SUB AX BX:SUB是减法指令,AX=AX-BX,将BX与AX地址的数字相减放置到Bx地址中。

对于要让计算机进行相同的运算操作,机器语言是晦涩难懂的二进制,而汇编则使用助记符,略微减小了编程时的难度。

优缺点:优点是操作数可直接使用十进制表示,程序也更容易理解;缺点是大型程序难以开发,比较依赖于具体计算机。

高级程序语言(重要,理解解释与编译)

程序语言发展史:

50年代:Fortran、ALGOL 60年代:COBOL语言、BASIC语言 70年代:Pascal语言、C语言 80年代:Ada语言、PROLOG语言、LISP语言 90年代:面向对象语言C++、Java

目的:克服汇编语言的缺陷、提高编程和维护的效率。

特点:这些语言都更接近人们日常使用的语言(如英语),更加容易理解,并且对于符号、词汇、语法和语义的各种语言成分都有严格的规定。

下面介绍一些语言以及其对应的特点:

FORTRAN:是FORmula TRANslation(公式翻译)的缩写词,主要用于数值计算的面向过程的程序设计语言。 FORTRAN 2008:最新的国际标准,面向对象。 BASIC和Visual Basic语言:BASIC语言特点是简单易学;对于VB是基于BASIC发展的程序设计语言,是可视化面向对象,采用事件驱动方式的结构高级程序语言,能够快速、高效的开发windows应用软件。Java:SUN公司1995年发布的一种面向对象、用于网络环境的程序设计语言。特点有适用于网络分布环境、具有平台独立性(一次编译到处执行,关键是其jvm)。C语言与C++:C语言具有高级语言的优点以及汇编语言的效率,处理了可移植性和高效性之间的矛盾。C++是以C语言为基础发展而成的,既有面向过程又有面向对象能力,运行性能高,与C语言兼容。(单片机大多使用C语言;IOS操作系统的应用程序使用C++)

对于程序设计语言中的任何一个语言,最终还是会编译成汇编语言或机器语言在计算机上执行,如何从高级语言转换为汇编或二进制呢,那么就使用到了对应的翻译程序,过程如:源程序 ==(翻译程序)=> 目标程序

常用的几种翻译程序如下:

汇编语言源程序 ==(汇编程序,即汇编器)=> 机器语言目标程序高级语言源程序 ==(编译程序,即编译器)=> 机器语言或汇编语言目标程序高级语言源程序 ==(解释程序,即解释器)=> 边解释边执行,不产生目标程序

理解解释与编译的概念与区别:重要!!!

解释:直接解释源程序并执行源程序,不会产生目标程序的。编译:将源程序编译为机器语言目标程序。

下图是编译程序的过程:

image-20210303135613451

参考文章

[1]. CPU时间片轮转机制

[2]. 操作系统 虚拟存储器的概念

[3]. 算法:LRU(最近最少使用)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3