一、完成一个任务需要什么?

时间 + 资源 + 处理能力

时间就是时间。

资源就是资源。

处理能力就是能够利用时间和资源完成任务的主体。

二、关于操作系统

处理能力就是cpu。

资源就是存储。

时间就是cpu的时间。

cpu的处理能力:很快很快。

cpu需要获取存储资源:这个过程我们称之为IO,IO很快,但是和cpu相比,它很慢,很慢。

所以,

就像一个思想快于嘴巴的人,想要表达的时候,通常都会加上肢体语言,比如手势,身体。

它可以同时处理这许多方面的动作。

三、关于任务

任务在操作系统的世界里,通常对应一个进程,这是cpu处理能力的基本单位。

进程执行期间,需要IO,我们说过IO相对于cpu的处理能力来说,很慢,所以,如果只有一个进程,那么它IO的时候,cpu只能闲着。

闲着就是浪费。

这不符合我们的期望。

所以。

我们有了多进程,多任务同时执行。

这样,一个进程IO的时候,就可以让渡cpu时间给其它的进程,等待IO完成,然后重新等待cpu时间继续执行。

当然,我们也需要知悉,这个同时并不是所谓的同时。

四、关于时间

时间是进程执行的时间。

时间也是cpu输出计算能力的时间。

多进程之间需要让渡时间,那么就需要有个最基本的时间单位。

我们称之为时间碎片。

五、关于进程

不同进程之间相互独立。

各自加载各自的资源。

各自利用分配给自己的cpu时间碎片来执行任务。

我们知道,

一个任务可大可小,有复杂有简单。

按照我们通常思维。

此时,通常会有分治。

是的,进程会对任务进行分解,一个大任务分解成很多的小任务。

而执行这些小任务的基本单位,就是线程。

六、关于线程

线程是计算机世界里最基本的执行单元。

我们说过,进程之间会有时间碎片的调度。

同样,在一个进程内部,同样有不同线程之间的调度。

线程对于进程来说,内部资源共享。

所以线程之间,需求的是协作。

线程,也是系统的线程。

七、关于JAVA

Java是一个跨平台的语言。

所以能跨平台,是因为它有一个统一的运行空间。

自己创造的统一的运行空间,Java虚拟机-JVM。

虚拟机构造了自己的内存模型,

也有线程。

当然,这个线程不同于系统中的线程。

Java程序的任务调度,皆是基于Java的线程调度。

八、关于 Java 线程

JVM内存模型中最基本的两个单元,堆和栈。

堆是共享堆,栈是线程栈。

线程栈也是线程私有栈。

好了,到此为止,入门完毕。

白话分解入门操作系统到 Java的更多相关文章

  1. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  2. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

  3. Spring框架入门之基于Java注解配置bean

    Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...

  4. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

    转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了 ...

  5. Java小白入门:聊聊Java这门编程语言

    一.什么叫做编程 首先我们应该了解一下什么叫做编程. 百度百科词条的解释: 编程是编定程序的简称,是让计算机代我们解决某个问题,是对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终 ...

  6. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)

    首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...

  7. Java api 入门教程 之 JAVA的IO处理

    IO是输入和输出的简称,在实际的使用时,输入和输出是有方向的.就像现实中两个人之间借钱一样,例如A借钱给B,相对于A来说是借出,而相对于B来说则是借入.所以在程序中提到输入和输出时,也需要区分清楚是相 ...

  8. Java api 入门教程 之 JAVA的文件操作

    I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...

  9. Java api 入门教程 之 JAVA的SYSTEM类

    System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变 ...

  10. 深入入门正则表达式(java)

    一.入门基础 1.元字符 很多人对正则表达式的印象就是乱码..许许多多的符号组合在一起,偶见单词,正则确实是这样的,所以下面我们要看看这些符号都是什么意思 有些符号不是大家看到的字面上的意思:比如“. ...

随机推荐

  1. python3 pip3 安装python-ldap失败

    pip3安装时提示 ERROR: Could not build wheels for python-ldap, uWSGI, M2Crypto, which is required to insta ...

  2. python模块Configparser读取 ini(cfg,txt)等配置文件

    一个ini文件的组成: 一个ini文件是由多个section组成,每个section中以key=vlaue形式存储数据: 示例 # 安装 pip install ConfigParser # 1.导包 ...

  3. 在MATPool矩池云完成Pytorch训练MNIST数据集

    本文为矩池云入门手册的补充:Pytorch训练MNIST数据集代码运行过程. 案例代码和对应数据集,以及在矩池云上的详细操作可以在矩池云入门手册中查看,本文基于矩池云入门手册,默认用户已经完成了机器租 ...

  4. 亲测可用,ChatGPT 对话技巧

      "Linux终端" "我希望你充当一个 linux 终端.我会输入命令,你会回复终端应该显示的内容.我希望你只回复一个唯一代码块内的终端输出,没有别的.不要写解释.除 ...

  5. Kubernetes:Pod 端口映射

    本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...

  6. Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

    在之前的<手把手教你用 NebulaGraph AI 全家桶跑图算法>中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https:/ ...

  7. MySQL汇总数和分组数据

    1.使用SQL语句对数据库表中的数据进行简单的汇总和分组,这里要注意 count(*) 是对表中的所有数据目进行计数,不管表列中包含的是空值还是非空值. 而使用count(column)是对特定的列中 ...

  8. mybatis查询大批量数据的几种方式

    问题背景 公司里有很多需要跑批数据的场景,这些数据几十万到几千万不等,目前我们采用的是分页查询,但是分页查询有个深度分页问题,上百万的数据就会查询的很慢 常规解决方案 全量查询 分页查询 流式查询 游 ...

  9. PDF/Excel文件预览功能完整实现-java版本

    新需求 最近接到一个新的需求,说是之前直接下载的PDF文件或者是Excel文件,现在不能直接下载,需要实现在线预览功能. 前端人员拿到这个需求后,去看了一下以前的代码,以前调用的下载接口和PDF文件预 ...

  10. Apollo3 Blue SoC 和 Apollo3 Blue Plus SoC的区别

    一 芯片简介 1.简介 Apollo3 Blue系列SoC解决方案代表了超低功耗设计的巨大飞跃,其运行模式和睡眠模式下的功耗数值均十分出色,并且具有高性能的处理引擎. Apollo3Blue器件提供了 ...