进程(计算机基本组成,操作系统,进程,线程)

目录

前言

一,冯诺依曼体系

1.计算机最基本的组成:

2.简单介绍:

3:比较:

二,操作系统

1.概念:

2.两个基本功能:

三,进程

1.概念:

2.进程控制块抽象(PCB  process control block )

3. 内存分配 —— 内存管理(Memory Manage)

4. 进程间通信(Inter Process Communication)

四,线程

1. 总结进程和线程的区别和联系:

2.多线程调度:


前言

记录自己学习,哪里有问题,请和我说一下.

简单介绍现代计算机的组成,操作系统的概念及其工作,还有进程与线程相关概念。


一,冯诺依曼体系

1.计算机最基本的组成:

包括输入输出设备,CPU,及存储器。(Cpu是其中最核心的部分)

2.简单介绍:

CPU 中央处理器: 进行算术运算和逻辑判断.
存储器: 分为外存(硬盘)和内存, 用于存储数据(使用二进制方式存储)
输入设备: 用户给计算机发号施令的设备.
输出设备: 计算机个用户汇报结果的设备.


3:比较:

针对存储空间
硬盘 > 内存 >> CPU
针对数据访问速度
CPU >> 内存 > 硬盘


二,操作系统

1.概念:

操作系统是一组做计算机资源管理的软件的统称。(比如目前常见的操作系统:Windows系列、
Linux系列、、Android系列、iOS系列、鸿蒙等)

2.两个基本功能:

1) 防止硬件被时空的应用程序滥用;
2) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

(即是向上要给软件提供稳定的运行环境,向下要管理好各种硬件设备).


三,进程

1.概念:

进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看做是程序的一次运行过程;
同时,在操作系统内部,进程是操作系统进行资源分配的基本单位

(每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的)

2.进程控制块抽象(PCB  process control block )

(所谓进程管理,就是先描述一个进程(计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据),把它抽象成一个结构体/类,把其属性表现出来.然后组织这些进程,使用一定的数据结构把这些进程放在一起组织起来,PCB 就是用来抽象表示进程的(操作系统通常使用双向链表这样的结构来组织pcb的,即组织进程的).

1)PCB里面主要的属性:

a. id(每个进程的唯一标识身份符)

b. 内存指针(表示这个进程使用的内存部分)

c. 文件描述符表:(硬盘上存储的数据往往是以文件为单位进行整理的.进程每打开一个文件,就会产生一个文件描述符,标识被打开的文件,当进程打开多个文件时,会产生一组文件描述符,这些文件描述符放在一个顺序表这样的结构里,就构成了文件描述符表)

接下来这些属性是辅助进程(实际上是线程)调度的.( 进程调度Process Scheduling—即是CPU资源分配,

要注意:操作系统真正调度的是线程,而不是进程,进程里包含一个或多个线程.操作系统的调度运行是以线程为基本单位的):

d. 状态(简单分为就绪态(线程已经准备好,随时可以上CPU运行),阻塞态(该线程程暂时无法上CPU运行)

e. 优先级(线程之间的调度是有优先级之分的)

f.  上下文(描述线程执行到哪里…的一个”存档记录”,当线程离开CPU时,记录线程执行的中间结果”存档(寄存器的值保存到PCB的上下文字段中)”,当线程回来CPU继续执行时,就”读档(PCB的上下文段恢复到寄存器中)”,继续接着执行)

(所谓上下文就是线程运行过程中,CPU中一系列寄存器的值,其中最典型的作用保存线程执行的中间结果,包括线程执行到哪一条指令)

 g. 记账信息(记录每个线程在CPU上执行的时间,可作为调度的依据)

3. 内存分配 —— 内存管理(Memory Manage)

(操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰)

进程访问的内存地址是虚拟地址空间,通过页表映射到真实的物理内存.

(这样可以方便校验,知道地址是否真实有效,还有让每个进程在独立的地址空间运行,让进程之间无法相互干预)

4. 进程间通信(Inter Process Communication)

(进程是操作系统进行资源分配的最小单位,各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,所以进程之间互相具备隔离性,,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程之间进行配合地达到应用的目的,如此,进程之间就需要有进行信息交换的需求)

简单来说,在进程隔离性下,会有一个公共区域让不同进程之间进行数据交换.


四,线程

1. 总结进程和线程的区别和联系:

a.进程包含线程(进程里包含一个或多个线程).

b.进程有独立的系统资源.而各线程之间共用同一份进程的系统资源(内存空间,文件描述符表..等)

(线程是进程中执行运算的最小单元,是操作系统执行处理机制的基本单位。每个进程至少有一个线程,线程可以利用进程所拥有的资源执行调度和运算.进程将CPU资源分给线程,即真正在CPU上运行的是线程)

c.进程是操作系统分配资源的基本单位,而线程才是操作系统调度资源的基本单位

(所有与该进程有关的资源,均会被记录在进程控制块PCB中,以表示该进程所拥有的资源。同一进程下的所有线程共享该进程下的所有资源。线程是分配处理机的基本单位,与系统资源分配无关。真正在CPU上运行的是线程,并非进程。)

d.因为b.的原因,进程之间具有独立性.(就是不会互相影响的意思,一个进程挂了,不会影响其他的进程.)但是,同一个进程里的线程之间会相互影响(一个线程挂了,会影响到其他的线程.)还有同一个进程中的所有线程的数据是共享的(可以直接通信),进程之间的数据是独立的(需要上面所讲的进程通信来实现)

e.线程是"轻量的"(进程是”重量的”,创建,销毁进程的速度慢,消耗资源多,主要体现在资源分配上.而线程是”轻量的”,创建,销毁线程的效率相比于进程是提高了的)

线程启动速度快,进程启动速度慢(两者运行速度没有可比性)。

2.多线程调度:

1)并行,并发:

a.并行 (同一时刻,两个核心(CPU内核)分别执行两个线程,这两个线程就可以称为并行执行的.)

(并行是在不同cpu资源上同时执行)

b.并发(一个核心先执行线程1一会儿,再执行线程2一会儿,再执行线程3…..切换的速度足够快,这些线程可以看作是”同时”执行,这时候这几个线程称为并发执行.)

(并发是在同一个cpu资源上"同时"执行)

 (在很多时候,并行,并发都统称为并发,CPU执行线程时,就是通过并行,并发这样的方式完成的,

可以提高程序对CPU资源的利用率,最大限度地利用CPU资源).

 

 

 

 

 

 

 

 

 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值