1.认识冯诺依曼体系结构
冯诺依曼体系结构:现代计算机硬件体系结构
输入设备:键盘
输出设备:显示器
存储器:内存条
运算器:
中央处理器:cpu
控制器:
硬件结构决定了软件行为/所有的设备都是围绕存储器工作的
2.简单认识操作系统
操作系统:内核+应用
功能:管理计算机软硬件资源
定位:搞管理的软件
目的:让计算机更加好用
库函数与系统调用接口的关系:库函数封装了系统调用接口;上下级的调用关系
3.进程概念
进程概念:
什么是进程:
运行中的程序,站在操作系统的角度,进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述,实现对程序的运行调度, linux下这个pcb实际上是一个结构体 task_struct{…}
进程如何描述一个运行中的程序:
内存指针,程序计数器,上下文数据,标识符PID,状态,优先级,记账信息,IO信息
CPU的分时机制-每个程序在cpu上运行都有一个时间片,时间片运行完毕则调度切换
时间片:程序在cpu上运行的这段时间
创建一个子进程出来,跟父进程干的事情是一样的,因为它们的运行的代码和数据以及当前运行的位置都是一样的
1 //这个demo用于体会如何创建一个进程,以及创建进程的各项细节
2
3
4 #include<stdio.h>
5 #include<unistd.h>
6
7 int main(){
8 printf("----create child process start----%d\n",getpid());
9 pid_t pid;//定义这个变量知识开辟了一块空间
10 pid = fork();//这个函数的返回值对于父子进程是不一样的:在父进程中,返回的是创建的子进
程的pid,在子进程中返回的是0
11 if (pid == 0){
12 //这是子进程,返回值为0
13 printf("this is child %d--rpid:%d\n",getpid(),pid);
14 }
15 else if(pid > 0){
16 //这是父进程,因为父进程的返回值是子进程的pid>0
17 printf("this is parent %d--rpid:%d\n",getpid(),pid);
18 }
19 else{
20 //出错了
21 printf("fork error\n");
22 }
23 printf("----create child process end----%d\n",getpid());
24 return 0;
25 }
这个函数的返回值对于父子进程是不一样的:
在父进程中返回创建的子进程的pid
在子进程中返回的是0
通常根据fork的返回值进行代码的分流,让父子进程进入不同的判断执行体完成不同的功能
父子进程代码共享,数据独有
如何查看进程:
ps -ef / -aux
pid_t getpid(void)获取调用进程的ID