操作系统学习笔记 栈

  栈是计算机控制过程调用和返回的常用技术。

  栈是一个有序的元素集合,具备后进先出特点,所以只能通过栈顶访问元素。在计算机中操作栈需要三个地址,它们通常保存在处理器寄存器中。

    栈指针:栈顶地址。当发生push或者pop操作时,这个指针会加1或者减1,以表示最新的栈顶指针;

    栈底:保存栈底单元的地址。当对空栈发生pop操作时,则发生错误;

    栈界限:保存最顶端栈单元的地址。当对满栈发生push操作时,则发生错误;

  在大多数机器中,栈底是栈块的高端地址,栈界限是栈块的高端地址。因此,栈是从高端地址向低端地址增长。

过程调用和返回,栈针

  当处理器处理一个过程调用时,它将返回地址放在栈中。当过程调用执行返回时,就会使用该栈顶地址。

  除了返回地址,过程调用还需要传递参数。有三种方式:

    1. 如果直接将参数传递到寄存器中,那么调用程序和被调用程序都需要被写入寄存器;

    2. 将参数保存在存储器的call指令之后,但是对于可变参数的处理会很困难;

    3. 最好的方法就是使用栈。当处理器执行一次过程调用的时候,不仅会保存返回地址,还会保存传递给被调用过程的参数。被调用过程会从栈中访问这些参数,在返回前,返回参数也可以放在栈中返回地址的下面。为一次过程调用保存的整个参数集合和返回地址,就称为一个栈帧

  例子:

  有一个过程调用P,P申明了局部变量x1,x2,。过程P会调用过程Q,过程Q申明了局部变量y1,y2。存储在每一个栈帧的第一项是指向前一帧的指针,如果参数的数量和长度是可变的,就需要使用该指针。第二项是该栈帧的过程的返回地址。随后是栈的顶部为局部变量分配空间,局部变量可用于参数传递。

可重入过程

  可重入过程是指程序代码的一个副本在同一时间内被多个用户共享。可重入过程的两个特征:程序代码修改自身;每个用户的局部数据必须单独保存。因此可重入过程必须由两部分组成:

  1. 永久不变的部分:组成过程的指令;

  2. 临时部分:执行调用程序的指针,以及指向程序使用的局部变量的存储地址的指针;

  过程的每个执行实例称之为激活,它将执行永久部分的代码,但是拥有自己的局部变量和参数的副本。被激活的相关联的临时部分称为激活记录,调用一个可重入过程时,该过程的激活记录保存在栈中,成为调用过程栈帧的一部分。

  

时间: 2024-11-13 09:26:52

操作系统学习笔记 栈的相关文章

RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

 一,RTX51 Tiny简单介绍 RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的).嵌入式应用系统常常有这样的需求.RTOS能够提供调度.维护.同步等功能. 实时操作系统能灵活的调度系统资源,像CPU和存储器,而且提供任务间的通信.RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器.该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程

计算机操作系统学习笔记_2_进程管理 --进程与线程(上)

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

操作系统学习笔记----进程/线程模型----Coursera课程笔记

操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上

Linux 操作系统学习笔记

一,unix 1.unix 特点 伸缩性强,开放性好, 2.基本原则 所有对象,硬件都是文件 配置数据以文本形式保存 短小的单目的程序构成 多个程序合作完成复杂任务 3.gnu 基本原则是共享,建立自由开放的unix系统 1984年 richard stallman 发起 基本体系是micro kernel 4.gpl Copyleft 原作者所有权 5.linux起源 Linustorvalds, 自由的类unix操作系统, 遵循gnu和gpl 6.linux 可以实现unix功能 遵循开源许

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

计算机操作系统学习笔记_4_进程管理 --处理机调度

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; f

ucos实时操作系统学习笔记——操作系统在STM32的移植

使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈

ucos实时操作系统学习笔记——任务间通信(消息)

ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了queue机制还要用mbox呢,只要设置queue的msg只有一个不就行了?其实很简单,就是为了节约资源,因为使用queue的话需要专门描述queue的机构体os_q,同时需要分配一段内存用来存放msg,而如果直接使用mbox机制的话,就好多了,节约..... 首先从mbox的创建开始,mbox创建的函

操作系统学习笔记——线程

这篇博客是本人操作系统课的学习笔记,因为是"双语授课",所以有些中英夹杂. 本篇文章禁止转载 版权声明:本文为博主原创文章,未经博主允许不得转载.