初识操作系统

简介: 初识操作系统

一.操作系统的认识

1:常见的操作系统有

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系

列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

  • Windows是常见的个人电脑操作系统;
  • Linux是常见的服务器上运行的操作系统;
  • Android是常见的手机上运行的操作系统;

操作系统的定位

简单来说,操作系统是管理各种硬件设备所提供的api接口进行封装,将其包装成一个软件,方便程序员在代码实现中直接进行调用而省去了一步步去连接硬件接口的复杂工作,例如:JAVA中的JDK便是对硬件接口封装的一种形式.

2:操作系统以进程操作系统由三个基本功能

1)防⽌硬件被时空的应⽤程序滥⽤;

2)向应⽤程序提供简单⼀致的机制来控制复杂⽽⼜通常⼤相径庭的低级硬件设备

3)以及一些系统的调度任务(以下两点):

  • 进程调度:操作系统以进程的方式维护运行中的程序,并通过PCB中的一些属性(比如:优先级,记账信息,状态等)完成对进程的调度;
  • 资源分配:应用程序在运行时向操作系统申请各种资源,其中就包括内存,所有内存管理也是操作系统的重要工作之一;组织文件管理系统:了解一下操作系统的定位,操作系统是计算机的最高管理者,管理所有的计算机资源,包括文件系统,协调硬件工作;


二:进程(Process)

1:什么是进程/任务(Process/Task)

每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运

⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可

以说是计算机科学中最重要和最成功的概念之⼀。

2:进程的定义

是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。每启动一个进程,操作系统就会为它分配一块独立的内存空间,用于存储PCB、数据段、程序段等资源。每个进程占有一块独立的内存空间

3:进程主要包含了六大板块

1).PID进程标识符(每一个进程都有自己的编号,系统通过编号来调度进程和销毁进程);

2):内存指针(主要是标识了哪些内存是该进程可以使用的空间);

3):文件描述符(进程使用的硬件的相关信息,将硬件设备封装成文件进行调用,并且在文件描述符表中分配一个表项,也就是一个PCB,来描述这个文件对系统资源的使用情况);

PCB:底层代码类似于C语言中的结构体,其中包含了很多关于一个进程的信息 ,也叫进程控制块,如:内存的使用情况,CPU的占比.......

4):状态

  • 就绪状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态
  • 阻碍状态: 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

5):优先级:多个进程等待系统的随机调度,根据哪个进程的优先级高则优先调用那个进程

6):记账信息:根据每个进程调用CPU的多少时间,进行一个统计,会根据这个统计来进一步调整调度的策略.


三:线程(Thread)

1:认识线程(Thread)

线程是什么:⼀个线程就是⼀个"执⾏流".每个线程之间都可以按照顺序执⾏⾃⼰的代码.多个线程之间"同时"执⾏着多份代码

2:为啥要有线程

⾸先,"并发编程"成为"刚需".

• 单核CPU的发展遇到了瓶颈.要想提⾼算⼒,就需要多核CPU.⽽并发编程能更充分利⽤多核CPU

资源.

• 有些任务场景需要"等待IO",为了让等待IO的时间能够去做⼀些其他的⼯作,也需要⽤到并发编程.

比特就业课

其次,虽然多进程也能实现并发编程,但是线程⽐进程更轻量.

• 创建线程⽐创建进程更快.

• 销毁线程⽐销毁进程更快.

• 调度线程⽐调度进程更快.

最后,线程虽然⽐进程轻量,但是⼈们还不满⾜,于是⼜有了"线程池"(ThreadPool)和"协程"

(Coroutine)

3:创建线程

感受多线程程序和普通程序的区别:

• 每个线程都是⼀个独⽴的执⾏流

• 多个线程之间是并发执⾏的,代码如下:

import java.util.Random;
public class Solution {
    private static class MyThread extends Thread {
        @Override
        public void run() {
            Random random = new Random();
            while (true) {
                // 打印线程名称
                System.out.println(Thread.currentThread().getName());
                try {
                // 随机停⽌运⾏ 0-9 秒
                    Thread.sleep(random.nextInt(10));
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        MyThread t1 = new MyThread();
        t1.start();
        Random random = new Random();
        while (true) {
            // 打印线程名称
            System.out.println(Thread.currentThread().getName());
            try {
                Thread.sleep(random.nextInt(10));
            } catch (InterruptedException e) {
                // 随机停⽌运⾏ 0-9 秒
                e.printStackTrace();
            }
        }
    }
}
 
 

代码运行结果如下:

使⽤ jconsole 命令观察线程:


四:进程与线程的区别

1):进程是包含线程的.每个进程⾄少有⼀个线程存在,即主线程

2):进程和进程之间不共享内存空间.同⼀个进程的线程之间共享同⼀个内存空间

3):进程是系统分配资源的最⼩单位,线程是系统调度的最⼩单位

4):⼀个进程挂了⼀般不会影响到其他进程.但是⼀个线程挂了,可能把同进程内的其他线程⼀起带⾛(整个进程崩溃).

如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓 💓


相关文章
|
9月前
阿里邮件推送功能,是外贸人常用的功能,目前遇到了邮件模板插入图片非要用云链接的,官网的图片链接又不识别,有没有告诉指点下
阿里邮件推送功能,是外贸人常用的功能,目前遇到了邮件模板插入图片非要用云链接的,官网的图片链接又不识别,有没有告诉指点下
295 75
|
存储 缓存 安全
Cache-Control字段适用于哪些场景
【8月更文挑战第18天】Cache-Control字段适用于哪些场景
376 2
|
JSON 缓存 负载均衡
Node.js 的性能
Node.js 的性能
320 12
|
存储 Java 数据安全/隐私保护
什么是编码和解码
什么是编码和解码
1072 0
|
Android开发 开发者
flutter 开发环境配置和生命周期学习
flutter 开发环境配置和生命周期学习
|
机器学习/深度学习 人工智能 运维
智能化运维:利用AI和机器学习提升系统稳定性与效率
【6月更文挑战第21天】在数字化浪潮下,企业对IT系统的依赖程度日益加深。传统运维模式已难以满足现代业务需求,智能化运维应运而生。本文将探讨如何通过集成人工智能(AI)和机器学习(ML)技术,实现预测性维护、自动化故障处理和优化资源配置,以提升系统的稳定性和运行效率,同时降低运维成本。
610 5
|
C# Windows
49.c#:StatusStrip 控件
49.c#:StatusStrip 控件
409 1
49.c#:StatusStrip 控件
|
关系型数据库 MySQL 索引
MySQL不走索引的情况分析
MySQL不走索引的情况分析
278 0
MySQL不走索引的情况分析
|
设计模式 安全 Java
多线程设计模式【线程安全、 Future 设计模式、Master-Worker 设计模式 】(一)-全面详解(学习总结---从入门到深化)
多线程设计模式【线程安全、 Future 设计模式、Master-Worker 设计模式 】(一)-全面详解(学习总结---从入门到深化)
205 0
|
存储 弹性计算 Cloud Native
2023年 | 10月云大使返佣规则
2023年10月1日起云大使返佣新规上线,具体在①推广客户类型②返佣产品,③使等级返佣比例④单用户订单佣金封顶金额⑤大使佣金分期门槛方面进行调整