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

时间 + 资源 + 处理能力

时间就是时间。

资源就是资源。

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

二、关于操作系统

处理能力就是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. pta-神坛

    [神坛]pta *相邻两条边围成的三角形面积会是最小的 极角排序+叉积计算三角形面积 #include<bits/stdc++.h> #define int long long using ...

  2. letcode-两数相除

    题解 设未知数: Br= 125 / 3,拆进行如下拆解: Br = 125 / 3 Br = (29 + 96)/3 Br = 29/3 + (32 * 3) / 3 Br = 29/3 + (2 ...

  3. C++ 多线程的错误和如何避免(2)

    试图 join 一个已经 detach 的线程 如果你已经在某个地方分离了线程,那你不可以在主线程再次 join,这是一个明显的错误 比如: #include <iostream> #in ...

  4. linux下安装django2.2

    安装 pip3 install django==2.2 创建项目 django-admin startproject pyweb 创建应用 django-admin startapp app01 修改 ...

  5. 03-Redis系列之-高级用法详解

    慢查询 生命周期 我们配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询. 慢查询发生在第三阶段 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素 两个配置 slowl ...

  6. 【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?

    问题描述 在App Service Authentication 中配置 Azure AD 注册的应用信息后,根据官方文档,可以让前端应用实现用户 AAD 登录,然后通过前端应用获取的Token,来访 ...

  7. 【Azure Redis 缓存】Redis导出数据文件变小 / 在新的Redis复原后数据大小压缩近一倍问题分析

    问题描述 使用 Azure Cache for Redis 服务,在两个Redis服务之间进行数据导入和导出测试.在Redis中原本有7G的数据值,但是导出时候发现文件大小仅仅只有30MB左右,这个压 ...

  8. Python(上机题) 通俗易懂的基础题目解析

    python 题目 文章目录 python 题目 题目一:幸运数对 题目二:lambda 函数找最大值 题目三:n个数前后互换 (切片) 题目四:字符串相减(删除指定字符) 方法一:可以用空字符来替换 ...

  9. apt-get upgrade 和apt-get dist-upgrade区别

    kali  linux系统或者 debian等系统 以及centos  在系统升级后经常会出现系统无法启动,或者启动之后GUI功能没有的问题: 笔记:   区别这两种用法 apt-get update ...

  10. iview table 左侧固定列 右侧固定列 滚动的时候 表格错位 解决方案

    iview table 左侧固定列 右侧固定列 滚动的时候 表格错位 解决方案 iview table 滚动条位置重置 https://www.jianshu.com/p/32fcd50489ff