线程和进程

进程(Process)

1.描述:

        通过一组结构体PCB(一组线程)描述, 用于存储进程的各种信息

2.组织:

        通过一定的数据结构讲各信息组织到一起, 进行增删查改, 系统中这样的结构通常是双向链表

3.创建步骤:

        创建PCB ->  给进程分配资源(内存 / 文件(硬盘资源))并赋值到PCB中 -> 将PCB插入链表

4.销毁步骤:

        从链表中删除PCB -> 将PCB持有的资源释放(消耗大头) -> 销毁PCB

5.并发编程:

        一个CPU核心可以独立运行一个进程, 多个CPU核心同时一起运行多个进程就是并发执行, 一个CPU核心快速轮流运行多个进程就是并发执行, 而并发编程的含义其实是并发执行和并行执行都有的, 只是统称并发

线程(Thread)

1.描述:

        通过结构体PCB描述, 用于存储进程的各种信息. 其实每个PCB就是一个线程.

2.从属关系:

        一个进程中可以有多个线程, 但是每个PCB对应一个线程.

3.线程PCB之间的关系:

        在同一进程中的PCB满足::共用一份文件指针和文件描述符表, 但是状态\上下文\记账信息是独立

进程和线程的区别

1.进程是操作系统进行资源分配的基本单位, 线程是操作系统调度执行的基本单位

2.进程包含了线程

3.同一进程中的线程公用了一份内存(指针)和文件资源(文件描述符表), 进程和进程之间有独的内存和文件资源.

4.线程的创建和销毁开销都要小于进程

进程和线程关系的形象解释

        一个进程只跑一个线程, 就像八车道双向的高速公路只让一车道车, 明明车道很富裕, 但是车不够多, 车道资源过剩. 多个线程就如多让几个车道都行车, 在资源允许的情况下充分发挥性能. 

        线程之间会相互影响, 是因为同一进程中的线程共用一份文件资源和内存, 一方出错另一方可能受影响, 好比八车道高速公路, 虽然每条车道独立相互独立, 但是一条车上有一列的车, 前面的车出车祸势必会影响后面的车运行, 因为他们共用了那一条车道资源.

PCB 进程控制块 (Program Control Block) 

        进程是操作系统分配资源的基本单位.

        PCB的结构是个结构体变量

PCB包含的基本信息:

1.pid 进程身份标识

        每一个进程有唯一的一个pid, 用于给主机区分不同线程.用于区分进程的好像是叫prgp_id???

2.内存指针

        用于描述进程持有的内存资源的一块内存空间. 有的用来存放数据, 有的用来维护运行状态, 有的用来存指令, 和给进程分配的内存空间息息相关

3.文件描述符表

        记录当前进程打开了哪些文件, 打开了之后就可以对文件进行读写操作了

进程调度信息:

1.进程状态

        就绪状态, 可以被CPU执行; 阻塞状态, 无法被CPU调度执行

2.进程优先级

        系统根据优先级给进程安排时间, 创建进程时候也可以通过系统调用来干预优先级

3.进程上下文

        上下文其实就是CPU中寄存器的值. 因为要被执行的进程很多, 所以CPU肯定需要切换进程, 这过程中就有对数据的读档和存档操作, 操作的就是上下文

4.进程记账信息

        统计每个进程再CPU上执行了多久, 衡量参数是执行的指令条数. 对执行的少的(进程优先级低的)进程多分配, 防止其完全不被执行

     

线程调度举例

public static void main(String[] args) {
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("1");
        }
    });
    t.start();
    System.out.println("2");
}
//输出第一行:2
//输出第二行:1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值