精华内容
下载资源
问答
  • linux系统编程学习_(1)进程相关概念、多道程序设计概念、CPU与MMU、进程控制块(PCB)及环境变量 进程相关概念 程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁...

    linux系统编程学习_(1)进程相关概念、多道程序设计概念、CPU与MMU、进程控制块(PCB)及环境变量

    进程相关概念

    程序和进程

    程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)
    进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进程)
    程序 → 剧本(纸) 进程 → 戏(舞台、演员、灯光、道具…)
    同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)
    如:同时开两个终端。各自都有一个bash但彼此ID不同。

    并发

    并发,在操作系统中,一个时间段中有多个进程都处于已启动运行到运行完毕之间的状态。但,任一个时刻点上仍只有一个进程在运行。

    多道程序设计

    在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。
    时钟中断即为多道程序设计模型的理论基础。 并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。

    时钟中断有硬件基础作为保障,对进程而言不可抗拒。 操作系统中的中断处理函数,来负责调度程序执行。

    在多道程序设计模型中,多个进程轮流使用CPU (分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令。由于人眼的反应速度是毫秒级,所以看似同时在运行。

    实质上,并发是宏观并行,微观串行!
    -----推动了计算机蓬勃发展,将人类引入了多媒体时代。

    CPU和MMU

    couMMU:

    1. 虚拟内存与物理内存的映射
    2. 设置修改内存访问级别

    内存管理单元MMUpage是MMU划分物理内存的最小单位,当我执行2个a.out时,虚拟地址空间2份,其中user空间映射的物理内存需要重新开辟空间,因为进程彼此独立,但kernel虚拟空间在物理内存中只映射一份,因为内核一份,但PCB进程控制块依然2份,不一样。

    进程控制块(PCB)

    我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
    通过命令:
    grep -r “task_struct {” /usr/src/linux-headers-3.16.0-30/include/linux/sched.h

    或者直接打开/usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。其内部成员有很多,重点掌握以下部分即可:

    • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
    • 进程的状态,有就绪、运行、挂起、停止等状态。
    • 进程切换时需要保存和恢复的一些CPU寄存器。
    • 描述虚拟地址空间的信息。
    • 描述控制终端的信息。
    • 当前工作目录(Current Working Directory)。
    • umask掩码。
    • 文件描述符表,包含很多指向file结构体的指针。
    • 和信号相关的信息。
    • 用户id和组id。
    • 会话(Session)和进程组。
    • 进程可以使用的资源上限(Resource Limit)。

    进程状态

    进程基本的状态有5种。分别为初始态,就绪态,运行态,挂起态与终止态。其中初始态为进程准备阶段,常与就绪态结合来看。
    进程状态

    环境变量

    环境变量,是指在操作系统(Linux多用户多任务)中用来指定操作系统运行环境的一些参数。通常具备以下特征:
    ① 字符串(本质) ② 有统一的格式:名=值[:值] ③ 值用来描述进程环境信息。
    存储形式:与命令行参数类似。char *[]数组,数组名environ,内部存储字符串,NULL作为哨兵结尾。
    使用形式:与命令行参数类似。
    加载位置:与命令行参数类似。位于用户区,高于stack的起始位置。
    引入环境变量表:须声明环境变量。extern char ** environ;

    //environ.c 打印当前进程的所有环境变量
    #include <stdio.h>
    
    extern char **environ;
    
    int main(void)
    {
    	int i;
    
    	for(i = 0; environ[i] != NULL; i++){
    		printf("%s\n", environ[i]);
    	}
    
    	return 0;
    }
    

    常见环境变量

    按照惯例,环境变量字符串都是name=value这样的形式,大多数name由大写字母加下划线组成,一般把name的部分叫做环境变量,value的部分则是环境变量的值。环境变量定义了进程的运行环境,一些比较重要的环境变量的含义如下:
    PATH
    可执行文件的搜索路径。ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然而通常我们执行当前目录下的程序a.out却需要提供完整的路径名./a.out,这是因为PATH环境变量的值里面包含了ls命令所在的目录/bin,却不包含a.out所在的目录。PATH环境变量的值可以包含多个目录,用:号隔开。在Shell中用echo命令可以查看这个环境变量的值:
    $ echo $PATH
    SHELL
    当前Shell,它的值通常是/bin/bash。
    TERM
    当前终端类型,在图形界面终端下它的值通常是xterm,终端类型决定了一些程序的输出显示方式,比如图形界面终端可以显示汉字,而字符终端一般不行。
    LANG
    语言和locale,决定了字符编码以及时间、货币等信息的显示格式。
    HOME
    当前用户主目录的路径,很多程序需要在主目录下保存配置文件,使得每个用户在运行该程序时都有自己的一套配置。

    环境变量相关函数

    getenv()函数
    获取环境变量值
    函数原型:char *getenv(const char *name);
    成功返回环境变量的值,失败NULL(name不存在)
    setenv()函数
    设置环境变量的值
    函数原型:int setenv(const char *name, const char *value, int overwrite);
    成功0 失败-1
    参数overwrite取值:
    1 - - 覆盖原环境变量
    0 - -不覆盖。(该参数常用于设置新环境变量,如ABC=haha-day-night)

    . unsetenv()函数
    删除环境变量name的定义
    函数原型:int unsetenv(const char *name);
    成功0 失败-1
    注意事项: name不存在仍返回0(成功),当name命名为”ABC=“时则出错

    // setenv_getenv_unsetenv.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
    	char *val;
    	const char *name = "ABD";
    
    	val = getenv(name);
    	printf("1, %s = %s\n", name, val);
    
    	setenv(name, "haha-day-and-night", 1);
    
    	val = getenv(name);
    	printf("2, %s = %s\n", name, val);
    
    #if 1
    	int ret = unsetenv("ABD=");
        printf("ret = %d\n", ret);
    
    	val = getenv(name);
    	printf("3, %s = %s\n", name, val);
    
    #else
    	int ret = unsetenv("ABD");  //name=value:value
    	printf("ret = %d\n", ret);
    
    	val = getenv(name);
    	printf("3, %s = %s\n", name, val);
    
    #endif
    
    	return 0;
    }
    

    参考

    黑马程序员服务器开发课程资料

    展开全文
  • 多道程序设计

    千次阅读 2021-02-01 22:20:41
    多道程序设计概念 概念:只让个程序同时进入计算机的主存储器进行计算 解决问题:CPU速度和I/O速度的不匹配 解决思路:是让道程序同时进入内存争夺CPU运行,才可以使得CPU和外围设备充分并行,从而提高计算机...

    多道程序设计

    多道程序设计的概念

    概念:只让多个程序同时进入计算机的主存储器进行计算

    解决问题:CPU速度和I/O速度的不匹配

    解决思路:是让多道程序同时进入内存争夺CPU运行,才可以使得CPU和外围设备充分并行,从而提高计算机系统的使用效率

    多道程序同时计算

    单个程序运行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a9Buf4KA-1612189225602)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210201201448490.png)]

    两个程序

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJc9Povb-1612189225606)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210201201632062.png)]

    实际上IO可能会冲突,实际CPU利用率略低

    设计的优点

    • CPU和外部设备充分并行
    • 外部设备之间充分并行
    • 发挥CPU的使用效率
    • 提高单位时间的算题量

    多道程序设计的实现

    • 为进入内存执行的程序建立管理实体:进程
    • OS 管理与控制进程的执行
    • OS 协调管理各类资源在进程间的使用
      • 主处理器(CPU)的管理与调度
      • 主存储器的管理与调度
      • 其他资源(外围设备)的管理和调度

    实现要点:

    • 如何使用资源:调用操作系统提供的服务例程(如何显陷入操作系统)

    • 如何复用CPU:调度程序(在CPU在空闲的时,让其他程序执行)

    • 如何使CPU和I/O设备充分并行:设备控制器控制器和通道(专用的I/O处理器)

    • 如何让正在运行的程序让出CPU:中断(中断正在执行的程序,引入OS处理)

    • 如何让正在运行的程序让出CPU:中断(中断正在执行的程序,引入OS处理)

    展开全文
  • 引入多道程序的目的在于什么

    千次阅读 2021-07-17 00:23:39
    引入道程序的目的在于充分利用CPU,减少CPU等待时间。...(操作系统知识分享:windows)所谓多道程序设计是指允许个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中...

    引入多道程序的目的在于充分利用CPU,减少CPU等待时间。多道程序技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下相互穿插运行两个或两个以上的程序,这些程序共享计算机系统资源。

    79e1e76eadab0e57cc5725112689001d.png

    引入多道程序的目的在于充分利用CPU,减少CPU等待时间。

    (操作系统知识分享:windows)

    所谓多道程序设计是指允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各道程序轮流使用CPU,交替执行。

    引入多道程序设计技术的根本目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。

    多道程序:

    多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。与之相对应的是单道程序,即在计算机内存中只允许一个的程序运行。

    对于一个单CPU系统来说,程序同时处于运行状态只是一种宏观上的概念,他们虽然都已经开始运行,但就微观而言,任意时刻,CPU上运行的程序只有一个。

    mac系统教程:macos

    展开全文
  • 它不仅能让你轻松进入Java世界,更重要的是,通过学习本书,能够把面向对象的设计理念自然而然地融入你的学习和编程中。“对象先行”正是本书倡导的一个重要方面,这也是本书区别于其他教材的一个突出特点。我们很多...

    译者序Java Concepts: Early Objects (Eighth Edition)这是一本让人惊喜的Java入门书。

    它不仅能让你轻松进入Java世界,更重要的是,通过学习本书,能够把面向对象的设计理念自然而然地融入你的学习和编程中。“对象先行”正是本书倡导的一个重要方面,这也是本书区别于其他教材的一个突出特点。我们很多人最早学习Java时都经历了从面向过程到面向对象的概念转换,由于前期养成了一些不好的编程习惯,所以往往饱受纠正错误的痛苦。如果那时能有这样一本书,我们会少走很多弯路。从这个意义上讲,你真的很幸运!

    本书的目的是介绍基本概念,为Java编程奠定基础。本书分为基础知识、面向对象设计以及数据结构和算法三部分,看似平常,但内容绝不枯燥。每一章每一节都精心设计,以通俗易懂的方式清晰地讲解概念,更通过实用示例强化理解。另外,作为第一线的教师,本书作者深谙教学之道,将课堂设计中的多种教学元素很好地贯穿在了本书中。每一章首先给出学习目标,并提供大量提示和详细说明来强调重点,这些内容就像我们上课时所记的笔记,能帮助我们真正掌握所学的内容。不仅如此,本书的版式也让人眼前一亮,不同层次的读者可以按照学习要求灵活地安排学习内容和顺序,更能感受学习的乐趣。

    本书特别设置了“计算与社会”“专题”及“科学和商业练习”等板块,来提高学生的学习兴趣。更重要的是,通过这些贴近生活的实用主题,书中介绍的知识不再只是生硬的书本概念,而直接对应于切切实实的具体实践,这会让学习过程更加有的放矢。还有一点需要指出的是,本书中的练习覆盖面很广,可能涉及一些对你来说很生疏的领域,以至于让一些人望而却步,但这些练习并不要求你掌握那些领域的理论背景,它们只是用来提供一些“场景”,使你能够在这些场景下实际操练你学到的Java编程知识。

    希望本书能为你开启Java编程世界的大门,帮你踏出坚实的第一步。

    本书由林琪和肖斌主译,朱涛江、杜志秀、杨春生、刘亮、王宇、张伶、王志淋、刘跃邦参与了全书的修改整理,程芳、吴忠望、张练达、陈峰、杨健康、姚勇、张莹、牛亚峰、高强、赵蓓、荆涛、刘恒完善了关键部分的翻译。全体人员共同完成了本书的翻译工作。不过由于水平有限,译文肯定有不当之处,敬请批评指正。

    林琪2017年11月

    展开全文
  • 多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。与之相对应的是...
  • 多道程序

    2021-07-12 01:22:46
    多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。与之相对应的是...
  • 多道程序设计和分时 作业 下面关于分时系统的叙述错误的是()。 A.分时系统主要用于批处理作业 B.分时系统中每个任务依次轮流使用时间片 C.分时系统的响应时间好 D....
  • 第1次理论课作业(操作系统的概念-多道程序设计技术) ** 题量: 4 满分: 5 作答时间:09-02 20:48至09-08 10:00 4.5分 一. 单选题(共3题,3分) 1. (单选题, 1分)实时操作系统必须在( )内处理完来自外部的事件。 A. 一...
  • 要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。道程序道程序是作业之间自动调度执行、共享系统资源,并不是真正地同时执行个作业。多道程序设计技术是在...
  • 多道程序设计的出现解决了这个问题,就是把内存分为几个部分,每一个部分放不同的程序。当一个程序需要等待I/O操作完成时。那么CPU可以切换执行内存中的另外一个程序。如果内存中可以同时存放足够的程序,那CPU的...
  • 《编程之—Java程序设计入门》本教材从开始到结束,力图通过一个完整的实例去阐述Java不同的应用技术。在结束时,再次完整地展现Java的魅力,使得读者在阅读本教材时有种 浑然一体的感觉。本教材的第1章到第7章...
  • 在学习指导部分,介绍了C语言各章知识的要点和难点,选择一些典型例题进行了分析,选编了大量的练习题,这些练习题,题型丰富,覆盖面广,有选择题、填空题、阅读程序写结果题、编写程序题,每题都给出了参考答案...
  • 有一个大作业,是设计并开发一门新的语言。期末还有考试。 如果大作业被评为优秀,就不用参加期末的考试了。期末考试难度不低,上八十的很少。复习的话要根据重点来看。最重要的是平时的作业,比如用scala实现...
  • 参考链接: 用Python设计键盘记录器基础篇第1章Python语言介绍1.1Python语言简介1.2安装与配置Python环境1.2.1安装Python1.2.2运行Python1.3Python开发环境IDLE简介1.3.1IDLE的启动1.3.2利用IDLE创建Python程序1.3.3...
  • 《c语言程序设计》上机实验报告要求1. 实验环境:软件系统:使用的软件环境硬件系统:机型说明2. 实验目的:掌握如何编辑、编译、链接调试运行c程序3. 实验内容:(1) 掌握顺序结构程序设计. P26 ,p49,p62 3.2~3.7(2)...
  • Python程序设计——从基础到开发

    千次阅读 2021-02-04 08:23:11
    基础篇 n第1章Python语言介绍 n1.1Python语言简介 n1.2安装与配置Python环境 n1.2.1安装Python n1.2.2运行Python n1.3Python开发环境IDLE简介 n1.3.1IDLE的启动 n1.3.2利用IDLE创建Python程序 n1.3.3IDLE常用编辑...
  • 计算机常用算法与程序设计案例教程(第2版)语音编辑锁定讨论上传视频《计算机常用算法与程序设计案例教程(第2版)》是2014年清华大学出版社出版的图书。书名计算机常用算法与程序设计案例教程(第2版)ISBN9787302382942...
  • 计算机组成原理与汇编语言程序设计(第4版)语音编辑锁定讨论上传视频《计算机组成原理与汇编语言程序设计(第4版)》是"十二五”普通高等教育本科国家级规划教材。书名计算机组成原理与汇编语言程序设计(第4版)作者徐洁...
  • 工业技术->自动化技术、计算机技术->计算技术、计算机技术->计算机软件 ) 内容提要:本书是与《C语言程序设计》配套的辅导教材,分为两篇:第一篇是“习题解答与典型例题”;第二篇是“上机指导”,介绍了Visual C++ ...
  • 2011-2012学年第二学期第一次诊断考试《c语言程序设计》 试卷分析一、试卷概况C语言程序设计在“专业基础知识测试”考试科目中占分100分,是计算机专业学生中开课时间较迟的一门课,也是学生最头疼的一门课。很...
  • 前言章习题解答参考项目1Java语言概述任务1Java发展史与特点参考答案任务2Java程序工作原理参考答案任务3面向对象基础参考答案任务4Java的开发和运行环境参考答案项目2Java语言基础任务1Java语言的基本组成参考答案...
  • 一、目录介绍第1章 走入并行世界1.1 何去何从的并行计算1.1.1 忘掉那该死的并行1.1.2 可怕的现实:摩尔定律的失效1.1.3 柳暗花明:不断地前进1.1.4 光明或是黑暗1.2 你必须知道的几个概念1.2.1 同步(Synchronous)和...
  • 陈明委员:毛国君白中英叶新铭刘淑芬刘书家汤庸何炎祥陈永义罗四维段友祥高维东郭禾姚琳崔武子曹元大谢树煜焦金生韩江洪策划编辑: 谢琛21世纪计算机科学与技术实践型教程序21世纪影响世界的三大关键技术: 以...
  • 国开电大专科《程序设计基础》形考任务1至4试题及答案形考任务1 试题及答案一、 填空题l . 和计算机的五大主要应用领域是[答案]科学计算、 数据处理、 过程控制、 计算机辅助系统、 人工智能2.总线是连接 、 和 ...
  • 图书目录:第1章 走入并行世界 11.1 何去何从的并行计算 11.1.1 忘掉那该死的并行 21.1.2 可怕的现实:摩尔定律的失效 41.1.3 柳暗花明:不断地前进 51.1.4 光明或是黑暗 61.2 你必须知道的几个概念 71.2.1 ...
  • 本书共设计20个实验,将C语言的内容由浅入深、层次分明地给读者娓娓来,非常适合编程初学者思维模式的培养及训练。¥19.00定价:¥26.00(7.31折)/2019-02-01本书共设计20个实验,将C语言的内容由浅入深、层次分明...
  • 唐朝对大案、疑案常由大理寺、刑部和御史台会同审理,称()A、会审B、三司会审C、小三司D、三司推事宋代法律效力高于律的法律形式是()A、敕B、令C、格D、式... 狭义的指数十恶重罪中的“不”包括()A、杀一家非死罪...
  • 中南大学操作系统设备驱动程序设计实验报告中南大学操作系统课程设计实验报告选题: 设备驱动程序设计一、概述:设计主要完成的任务和解决的主要问题;1.任务:设备驱动程序设计, 要求如下:设计Windows XP或者Linux...
  • C++面向对象程序设计

    2020-12-18 09:58:41
    C++面向对象程序设计 1. 指针 1.1 关于指针、空指针、野指针的区别 空指针:规定其指向为NULL,用来开辟一个指针时为指明方向。 野指针:在内存中随意开辟一个内存空间来让指针指向,但指针不可以访问地址。 int ...
  • C语言程序设计教程

    2021-05-19 18:01:51
    本书覆盖了C语言的主要语言点,对C语言的介绍比较全面和系统。为了使读者能够真正掌握...书中具有较大的知识信息量,从程序设计的基础知识、程序流程控制、数组、指针、自定义数据类型到最后的文件操作,通过120个实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,477
精华内容 51,390
关键字:

多道程序设计的概念