2019年3月

概述

  • 所有执行I/O操作的系统调用都以文件描述符,一个非负整数的,来指代打开的文件。
  • 文件描述符用以表示所有类型的已打开文件,包括管道、FIFO、socket、终端、设备和普通文件。
  • 针对每个进程,文件描述符都自成一套。
  • 文件描述符012表示标准输入标准输出标准错误,这三个文件描述符在进程中始终是打开的
  • 下面介绍执行文件I/O操作的4个主要系统调用:

    • fd = open(pathname, flags, mode)函数打开pathname所标识的文件,并返回文件描述符,用以在后续函数调用中指代打开的文件
    • numread = read(fd, buffer, count)调用从fd所指代的打开文件中读取至多count字节的数据,并存储到buffer
    • numwritten = write(fd, buffer, count)调用从buffer中读取多达count字节的数据写入由fd所指代的已打开文件中
    • status = close(fd)在所有输入/输出操作完成后,调用close(),释放文件描述符fd以及与之相关的内核资源

- 阅读剩余部分 -

网络

什么是网络

网络就是几部计算机主机或者是网络打印机之类的接口设备,通过网线或者是无线网络技术,将这些主机与设备连接起来,使得数据可以通过网络介质(网线以及其他网卡等硬件)来传输的一种方式

计算机网络组成组件

  • 节点:节点主要是具有网络地址(IP)的设备的统称
  • 服务器主机:就网络连接方向来说,提供数据以响应给用户的主机,都可以被称为是一台服务器
  • 工作站或客户端:任何可以在计算机网络输入的设备都可以是工作站,若以连接发起的方向来说,主动发起连接去要求数据的,就可以称为是客户端
  • 网卡:内置或者是外接在主机上面的一个设备,主要用于提供网络连接
  • 网络接口:利用软件设计出来的网络接口,主要是提供网络地址(IP)的任务
  • 网络形态拓扑:各个节点在网络上面的链接方式,一般讲的是物理连接方式
  • 网关:具有两个以上的网络接口,可以连接两个以上不同的网段的设备

- 阅读剩余部分 -

系统调用

  • 系统调用是受控的内核入口,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。
  • 以应用程序编程接口(API)的形式,内核提供有一系列服务供程序访问。
  • 关于系统调用需关注一下几点:

    • 系统调用将处理器从用户态切换到核心态,以便CPU访问受到保护的内核内存
    • 系统调用的组成是固定的,每个系统调用都由一个唯一的数字来标识
    • 每个系统调用可辅之以一套参数,对用户空间与内核空间之间传递的信息加以规范。
  • 从C语言编程的角度来看,调用C语言函数库的外壳函数等同于调用相应的系统调用服务例程。

- 阅读剩余部分 -

UNIX和C语言简史

  1. 1969年,在AT&T电话公司下辖的bell实验室中,Ken Thompson 开发出了首个UNIX实现。
  2. 1970年,AT&T的工程师们又在刚购进的Digital PDP-11 小型机上,以汇编语言重写了UNIX;未过多久,Dennis Ritchie设计并实现出了C编程语言。
  3. 到1973年,C语言步入了成熟期,人们使用这一新语言重写了UNIX内核。

- 阅读剩余部分 -