IO流2.基础

作者: ygxing | 来源:发表于2019-06-11 10:29 被阅读0次

一、什么是流

一组有序、有起始标记和结束标记的字节数据序列

二、作用

根据数据传输的各种特性,定义各种类,来操作传输的数据,使得输入输出独立于设备

三、分类
  • 按照流向的不同可分为:输入流(InputStream)和输出流(OutputStream)
  • 按照处理类型的不同可分为:字节流和字符流
1.输入输出流
  • 输入和输出都是相对于应用程序而言的
  • 输入流:
    • 数据源输入到应用程序
    • 应用程序主动去读取的流,例如读取文件
    • 往应用程序输入的流,例如键盘输入
  • 输出流:程序中的数据输出到外界
    • 应用程序主动输出的流,例如写入文件,发送网络包

2.字节和字符流

  • 字节流
    • 每次操作处理一个字节
    • 可以用来处理所有的流
  • 字符流
    • java中字符使用了Unicode编码,每个字符占用两个字节
    • 字符流默认处理两个字节
    • 字符流只能用来处理字符或者字符串

四.应用程序如何操作IO

关于这个问题,我们需要了解操作系统内核,用户空间和内存空间,应用程序运行过程中的用户态和内核态,操作系统的内存分配等知识

1.内核态和用户态
  • 有些CPU指令是非常危险的,用错的话,可能会导致系统崩溃
  • 所以CPU指令分为特权指令和非特权指令
  • 例如Intel的CPU将特权等级分为4个级别Ring0~Ring3
  • 不过linux系统只使用了Ring0和Ring3两个级别
  • 当进程运行Ring3级别的指令时,就称为运行在用户态
  • 当进程运行Ring0级别的指令时,就称为运行在内核态
2.操作系统内核
  • 操作系统的核心和内核(kernel)
  • 内核可以访问受保护的内存空间和底层硬件设备
  • 为了保证内核的安全,操作系统一般不允许用户直接操作内核,而是通过接口访问
  • Ring0级别的指令由操作系统内核执行
3.用户空间和内核空间

为了保证进程不能直接操作内核,操作系统将虚拟地址划分为两部分,用户空间和内核空间,以32位操作系统为例

  • 32位操作系统寻址空间为2^32B,也就是4GB
  • 内核空间
    • 高位的1G内存作为内核空间
    • 内核空间中存放的是内核代码和数据
    • 各个进程调用内核接口,进入内核
  • 用户空间
    • 低位的3G内存作为用户空间
    • 供各个进程访问
  • 进程操作IO流程
    • 所有的资源管理都是在内核空间完成的,例如磁盘读写,网络数据读写
    • 当进程需要进行IO读写的时候,通过一个特殊的指令,让进程进入内核空间
    • 进程读取IO到内核空间
    • 进程再将IO拷贝到用户空间
4.用户态和内核态
  • 进程执行了系统调用,执行内核代码的时候,该进程处于内核态
  • 进程执行了自己的代码,该进程处于用户态

相关文章

  • IO流2.基础

    一、什么是流 一组有序、有起始标记和结束标记的字节数据序列 二、作用 根据数据传输的各种特性,定义各种类,来操作传...

  • java基础之IO流

    IO流上:概述、字符流、缓冲区(java基础) IO流结构图 FilterInputStream、FilterOu...

  • 2018-10-10

    掘金50道基础 io流案例

  • java IO入门笔记

    1.java IO流的概念,分类,类图 1.1. java IO 流的概念 java的io是实现输入和输出的基础,...

  • Java IO详解

    1 Java IO流的概念,分类 1.1 Java IO流的概念 java的IO是实现输入和输出的基础,可以方便的...

  • Java基础之IO流

    ##Java基础之IO流IO流常用几个类的关系如下: 字节流 字节输入流FileInputStream 读取文件用...

  • IO Stream - 字节流

    字节流 IO流概述和分类IO流介绍1.IO:输入/输出(Input/Output)2.流:是一种抽象概念,是对数据...

  • Java基础-IO流-网络IO

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / Ja...

  • 2019-02-27

    基于IO流基础总结 io解说: 按照流动的方向,以内存为基准,分为 输入input 和 输出 output ,即流...

  • Java基础——流(IO)

    流(Stream)——水流 ,可以理解为连接文件和程序的东西,Stream是从起源(source)到接收(sink...

网友评论

    本文标题:IO流2.基础

    本文链接:https://www.haomeiwen.com/subject/hssffctx.html